Files
TaskPool/internal/database/migrate.go
T
2025-12-30 22:25:15 +08:00

41 lines
1.0 KiB
Go

package database
import (
"baihu/internal/logger"
"baihu/internal/models"
)
func Migrate() error {
// 先执行自定义迁移
if err := customMigrations(); err != nil {
logger.Warnf("[Database] 自定义迁移警告: %v", err)
}
return AutoMigrate(
&models.User{},
&models.Task{},
&models.TaskLog{},
&models.Script{},
&models.EnvironmentVariable{},
&models.Setting{},
&models.LoginLog{},
&models.SendStats{},
&models.Dependency{},
&models.Agent{},
&models.AgentRegCode{},
)
}
// customMigrations 自定义迁移(处理 AutoMigrate 无法自动完成的变更)
func customMigrations() error {
// 检查 ql_tokens 表是否存在,如果存在则修改 code 列大小为 64
if DB.Migrator().HasTable("ql_tokens") {
// MySQL: 修改 code 列大小
if err := DB.Exec("ALTER TABLE ql_tokens MODIFY COLUMN code VARCHAR(64)").Error; err != nil {
// 忽略错误(可能是 SQLite 或列已经是正确大小)
logger.Debugf("[Database] 修改 ql_tokens.code 列: %v", err)
}
}
return nil
}