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:
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())
|
||||
}
|
||||
|
||||
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 {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue