From 1622634a2abb007483f4a31e143d022ba7310b8e Mon Sep 17 00:00:00 2001 From: zijiren233 Date: Tue, 26 Dec 2023 23:33:07 +0800 Subject: [PATCH] Fix: init db --- internal/db/update.go | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) 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 }