shanshanzhong c582087c0f
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 6m27s
refactor: 更新项目引用路径从perfect-panel/ppanel-server到perfect-panel/server
feat: 添加版本和构建时间变量
fix: 修正短信队列类型注释错误
style: 清理未使用的代码和测试文件
docs: 更新安装文档中的下载链接
chore: 迁移数据库脚本添加日志和订阅配置
2025-10-13 01:33:03 -07:00

46 lines
1.1 KiB
Go

package initialize
import (
"errors"
"github.com/perfect-panel/server/internal/model/user"
"gorm.io/gorm"
"github.com/perfect-panel/server/initialize/migrate"
"github.com/perfect-panel/server/internal/svc"
"github.com/perfect-panel/server/pkg/logger"
"github.com/perfect-panel/server/pkg/orm"
)
func Migrate(ctx *svc.ServiceContext) {
mc := orm.Mysql{
Config: ctx.Config.MySQL,
}
if err := migrate.Migrate(mc.Dsn()).Up(); err != nil {
if errors.Is(err, migrate.NoChange) {
logger.Info("[Migrate] database not change")
return
}
logger.Errorf("[Migrate] Up error: %v", err.Error())
panic(err)
}
// if not found admin user
err := ctx.DB.Transaction(func(tx *gorm.DB) error {
var count int64
if err := tx.Model(&user.User{}).Count(&count).Error; err != nil {
return err
}
if count == 0 {
if err := migrate.CreateAdminUser(ctx.Config.Administrator.Email, ctx.Config.Administrator.Password, tx); err != nil {
logger.Errorf("[Migrate] CreateAdminUser error: %v", err.Error())
return err
}
logger.Info("[Migrate] Create admin user success")
}
return nil
})
if err != nil {
panic(err)
}
}