Run migrations on db initialization

This makes it so we can keep all schema changes in the `migrations`
module, instead of adding them there *and* in the schema files. It
fixes #92 and should prevent these kinds of issues in the future.
pull/95/head
Matt Baer 6 years ago
parent c08484aa9c
commit 771c7acf5f
  1. 8
      app.go
  2. 3
      migrations/migrations.go

@ -637,12 +637,18 @@ func adminInitDatabase(app *app) error {
} }
// Set up migrations table // Set up migrations table
log.Info("Updating appmigrations table...") log.Info("Initializing appmigrations table...")
err = migrations.SetInitialMigrations(migrations.NewDatastore(app.db.DB, app.db.driverName)) err = migrations.SetInitialMigrations(migrations.NewDatastore(app.db.DB, app.db.driverName))
if err != nil { if err != nil {
return fmt.Errorf("Unable to set initial migrations: %v", err) return fmt.Errorf("Unable to set initial migrations: %v", err)
} }
log.Info("Running migrations...")
err = migrations.Migrate(migrations.NewDatastore(app.db.DB, app.db.driverName))
if err != nil {
return fmt.Errorf("migrate: %s", err)
}
log.Info("Done.") log.Info("Done.")
return nil return nil
} }

@ -65,7 +65,8 @@ func CurrentVer() int {
} }
func SetInitialMigrations(db *datastore) error { func SetInitialMigrations(db *datastore) error {
_, err := db.Exec("INSERT INTO appmigrations (version, migrated, result) VALUES (?, "+db.now()+", ?)", CurrentVer(), "") // Included schema files represent changes up to V1, so note that in the database
_, err := db.Exec("INSERT INTO appmigrations (version, migrated, result) VALUES (?, "+db.now()+", ?)", 1, "")
if err != nil { if err != nil {
return err return err
} }

Loading…
Cancel
Save