mirror of
https://github.com/Eggbertx/gochan.git
synced 2025-08-02 19:16:23 -07:00
Add functions to stop double initialisation
This commit is contained in:
parent
1b3314499d
commit
4deb256b67
2 changed files with 56 additions and 25 deletions
|
@ -52,34 +52,38 @@ func ConnectToDB(host string, dbType string, dbName string, username string, pas
|
||||||
gclog.Print(fatalSQLFlags, "Failed to connect to the database: ", err.Error())
|
gclog.Print(fatalSQLFlags, "Failed to connect to the database: ", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = initDB("initdb_" + dbType + ".sql"); err != nil {
|
//TODO TEMP
|
||||||
gclog.Print(fatalSQLFlags, "Failed initializing DB: ", err.Error())
|
alreadyPopulated, err := DoesDatabaseVersionExist()
|
||||||
}
|
if !alreadyPopulated {
|
||||||
|
|
||||||
// Create generic "Main" section if one doesn't already exist
|
if err = initDB("initdb_" + dbType + ".sql"); err != nil {
|
||||||
if _, err = GetOrCreateDefaultSectionID(); err != nil {
|
gclog.Print(fatalSQLFlags, "Failed initializing DB: ", err.Error())
|
||||||
gclog.Print(fatalSQLFlags, "Failed initializing DB: ", err.Error())
|
}
|
||||||
}
|
|
||||||
//TODO fix new install thing once it works with existing database
|
|
||||||
// var sqlVersionStr string
|
|
||||||
// isNewInstall := false
|
|
||||||
// if err = queryRowSQL("SELECT value FROM DBPREFIXinfo WHERE name = 'version'",
|
|
||||||
// []interface{}{}, []interface{}{&sqlVersionStr},
|
|
||||||
// ); err == sql.ErrNoRows {
|
|
||||||
// isNewInstall = true
|
|
||||||
// } else if err != nil {
|
|
||||||
// gclog.Print(lErrorLog|lStdLog|lFatal, "Failed initializing DB: ", err.Error())
|
|
||||||
// }
|
|
||||||
|
|
||||||
err = CreateDefaultBoardIfNoneExist()
|
//TODO fix new install thing once it works with existing database
|
||||||
if err != nil {
|
// var sqlVersionStr string
|
||||||
gclog.Print(fatalSQLFlags, "Failed creating default board: ", err.Error())
|
// isNewInstall := false
|
||||||
|
// if err = queryRowSQL("SELECT value FROM DBPREFIXinfo WHERE name = 'version'",
|
||||||
|
// []interface{}{}, []interface{}{&sqlVersionStr},
|
||||||
|
// ); err == sql.ErrNoRows {
|
||||||
|
// isNewInstall = true
|
||||||
|
// } else if err != nil {
|
||||||
|
// gclog.Print(lErrorLog|lStdLog|lFatal, "Failed initializing DB: ", err.Error())
|
||||||
|
// }
|
||||||
|
|
||||||
|
err = CreateDefaultBoardIfNoneExist()
|
||||||
|
if err != nil {
|
||||||
|
gclog.Print(fatalSQLFlags, "Failed creating default board: ", err.Error())
|
||||||
|
}
|
||||||
|
err = CreateDefaultAdminIfNoStaff()
|
||||||
|
if err != nil {
|
||||||
|
gclog.Print(fatalSQLFlags, "Failed creating default admin account: ", err.Error())
|
||||||
|
}
|
||||||
|
//fix versioning thing
|
||||||
|
} else {
|
||||||
|
gclog.Print(gclog.LStdLog, "Database already populated")
|
||||||
}
|
}
|
||||||
err = CreateDefaultAdminIfNoStaff()
|
//END TEMP
|
||||||
if err != nil {
|
|
||||||
gclog.Print(fatalSQLFlags, "Failed creating default admin account: ", err.Error())
|
|
||||||
}
|
|
||||||
//fix versioning thing
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func initDB(initFile string) error {
|
func initDB(initFile string) error {
|
||||||
|
|
|
@ -907,3 +907,30 @@ func getBoardIDFromURI(URI string) (id int, err error) {
|
||||||
err = QueryRowSQL(sql, InterfaceSlice(URI), InterfaceSlice(&id))
|
err = QueryRowSQL(sql, InterfaceSlice(URI), InterfaceSlice(&id))
|
||||||
return id, err
|
return id, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//DoesDatabaseVersionExist returns whether or not the database versions table exists
|
||||||
|
func DoesDatabaseVersionExist() (bool, error) {
|
||||||
|
const sql = `SELECT COUNT(*)
|
||||||
|
FROM INFORMATION_SCHEMA.TABLES
|
||||||
|
WHERE TABLE_NAME = 'DBPREFIXdatabase_version'`
|
||||||
|
var count int
|
||||||
|
err := QueryRowSQL(sql, InterfaceSlice(), InterfaceSlice(&count))
|
||||||
|
return count > 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
//GetDatabaseVersion gets the version of the database, or an error if none or multiple exist
|
||||||
|
func GetDatabaseVersion() (int, error) {
|
||||||
|
const countsql = `SELECT COUNT(version) FROM DBPREFIXdatabase_version`
|
||||||
|
var count int
|
||||||
|
err := QueryRowSQL(countsql, InterfaceSlice(), InterfaceSlice(&count))
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
if count > 1 {
|
||||||
|
return 0, errors.New("More than one version in database")
|
||||||
|
}
|
||||||
|
const sql = `SELECT version FROM DBPREFIXdatabase_version`
|
||||||
|
var version int
|
||||||
|
err = QueryRowSQL(countsql, InterfaceSlice(), InterfaceSlice(&version))
|
||||||
|
return version, err
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue