Ensure that the application can start with a new database
authorJan Dittberner <jandd@cacert.org>
Wed, 31 Jul 2019 15:42:12 +0000 (17:42 +0200)
committerJan Dittberner <jandd@cacert.org>
Wed, 31 Jul 2019 15:42:12 +0000 (17:42 +0200)
This commit changes the NewDB function to run migrations before preparing
SQL statements.

models.go

index 57515a7..19d701c 100644 (file)
--- a/models.go
+++ b/models.go
@@ -262,6 +262,11 @@ var db *dbHandler
 
 func NewDB(database *sql.DB) *dbHandler {
        handler := &dbHandler{db: sqlx.NewDb(database, "sqlite3")}
+       _, err := migrate.Exec(database, "sqlite3", migrations.Migrations(), migrate.Up)
+       if err != nil {
+               log.Panicf("running database migration failed: %v", err)
+       }
+
        failedStatements := make([]string, 0)
        for _, sqlStatement := range sqlStatements {
                var stmt *sqlx.Stmt
@@ -276,10 +281,6 @@ func NewDB(database *sql.DB) *dbHandler {
                log.Panicf("%d statements failed to prepare", len(failedStatements))
        }
 
-       _, err := migrate.Exec(database, "sqlite3", migrations.Migrations(), migrate.Up)
-       if err != nil {
-               log.Panicf("running database migration failed: %v", err)
-       }
        return handler
 }