mirror of
https://github.com/halejohn/Cloudreve.git
synced 2026-01-26 17:41:57 +08:00
Feat: Decide whether to do database migration based on version.lock
This commit is contained in:
@@ -1,14 +1,31 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"Cloudreve/pkg/util"
|
||||
"cloudreve/pkg/conf"
|
||||
"cloudreve/pkg/util"
|
||||
"github.com/jinzhu/gorm"
|
||||
"github.com/mcuadros/go-version"
|
||||
"io/ioutil"
|
||||
)
|
||||
|
||||
//执行数据迁移
|
||||
func migration() {
|
||||
// 检查 version.lock 确认是否需要执行迁移
|
||||
// Debug 模式下一定会执行迁移
|
||||
if !conf.SystemConfig.Debug {
|
||||
if util.Exists("version.lock") {
|
||||
versionLock, _ := ioutil.ReadFile("version.lock")
|
||||
if version.Compare(string(versionLock), conf.BackendVersion, "=") {
|
||||
util.Log().Info("后端版本匹配,跳过数据库迁移")
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
util.Log().Info("开始进行数据库自动迁移...")
|
||||
|
||||
// 自动迁移模式
|
||||
DB.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&User{})
|
||||
DB.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&User{}, &Setting{})
|
||||
|
||||
// 添加初始用户
|
||||
_, err := GetUser(1)
|
||||
@@ -29,4 +46,10 @@ func migration() {
|
||||
}
|
||||
}
|
||||
|
||||
// 迁移完毕后写入版本锁 version.lock
|
||||
err = conf.WriteVersionLock()
|
||||
if err != nil {
|
||||
util.Log().Warning("无法写入版本控制锁 version.lock, ", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user