修改MySQL和Redis配置为本地开发环境 在Subscribe类型和模型中添加服务器相关字段 在InviteConfig中添加新配置项 启用ServerModel并修复数据库迁移错误处理 删除无用的运行配置文件
45 lines
1.1 KiB
Go
45 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.Errorf("[Migrate] Up error: %v", err.Error())
|
|
panic(err)
|
|
}
|
|
logger.Info("[Migrate] database not change")
|
|
}
|
|
// 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)
|
|
}
|
|
}
|