diff --git a/internal/db/update.go b/internal/db/update.go index 347bd3c..f46636f 100644 --- a/internal/db/update.go +++ b/internal/db/update.go @@ -43,23 +43,33 @@ var dbVersions = map[string]dbVersion{ } func UpgradeDatabase() error { - setting := model.Setting{ - Name: "database_version", - Type: model.SettingTypeString, - Group: model.SettingGroupDatabase, - Value: CurrentVersion, - } - err := FirstOrCreateSettingItemValue(&setting) - if err != nil { - return err - } - currentVersion := setting.Value - if currentVersion != CurrentVersion { - err = autoMigrate(models...) + var currentVersion string + if db.Migrator().HasTable(&model.Setting{}) { + setting := model.Setting{ + Name: "database_version", + Type: model.SettingTypeString, + Group: model.SettingGroupDatabase, + Value: CurrentVersion, + } + err := FirstOrCreateSettingItemValue(&setting) if err != nil { return err } + currentVersion := setting.Value + if currentVersion != CurrentVersion { + err = autoMigrate(models...) + if err != nil { + return err + } + } + } else { + err := autoMigrate(models...) + if err != nil { + return err + } + currentVersion = CurrentVersion } + version, ok := dbVersions[currentVersion] if !ok { return nil @@ -72,12 +82,12 @@ func UpgradeDatabase() error { } log.Infof("Upgrading database to version %s", currentVersion) if version.Upgrade != nil { - err = version.Upgrade(db) + err := version.Upgrade(db) if err != nil { return err } } - err = UpdateSettingItemValue("database_version", currentVersion) + err := UpdateSettingItemValue("database_version", currentVersion) if err != nil { return err }