1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-08-02 10:56:25 -07:00

Add functions to stop double initialisation

This commit is contained in:
comraderat 2020-05-17 18:23:24 +02:00
parent 1b3314499d
commit 4deb256b67
2 changed files with 56 additions and 25 deletions

View file

@ -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())
}
if err = initDB("initdb_" + dbType + ".sql"); err != nil {
gclog.Print(fatalSQLFlags, "Failed initializing DB: ", err.Error())
}
//TODO TEMP
alreadyPopulated, err := DoesDatabaseVersionExist()
if !alreadyPopulated {
// Create generic "Main" section if one doesn't already exist
if _, err = GetOrCreateDefaultSectionID(); err != nil {
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())
// }
if err = initDB("initdb_" + dbType + ".sql"); err != nil {
gclog.Print(fatalSQLFlags, "Failed initializing DB: ", err.Error())
}
err = CreateDefaultBoardIfNoneExist()
if err != nil {
gclog.Print(fatalSQLFlags, "Failed creating default board: ", 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()
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()
if err != nil {
gclog.Print(fatalSQLFlags, "Failed creating default admin account: ", err.Error())
}
//fix versioning thing
//END TEMP
}
func initDB(initFile string) error {

View file

@ -907,3 +907,30 @@ func getBoardIDFromURI(URI string) (id int, err error) {
err = QueryRowSQL(sql, InterfaceSlice(URI), InterfaceSlice(&id))
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
}