feat: 自动迁移表结构

This commit is contained in:
Blizzard
2025-04-26 11:58:41 +08:00
parent 248ed10c62
commit 5e41df7dc2
7 changed files with 77 additions and 9 deletions
+16
View File
@@ -1,8 +1,11 @@
package initialize
import (
"go.uber.org/zap"
"gorm.io/gorm"
"os"
"sundynix-go/global"
"sundynix-go/model/system"
)
// Gorm 根据全局配置中的数据库类型返回对应的 *gorm.DB 实例。
@@ -22,3 +25,16 @@ func Gorm() *gorm.DB {
return GormMysql() // 默认返回 MySQL 数据库的 *gorm.DB 实例
}
}
// MigrateTable 创建数据库表结构。
func MigrateTable() {
db := global.DB
err := db.AutoMigrate(
system.User{},
)
if err != nil {
global.Logger.Error("Migrate table failed,err:", zap.Error(err))
os.Exit(0)
}
global.Logger.Info("Migrate table success")
}
+6 -7
View File
@@ -5,6 +5,7 @@ import (
"gorm.io/gorm"
"sundynix-go/config"
"sundynix-go/global"
"sundynix-go/initialize/internal"
)
// GormMysql 初始化Mysql数据库
@@ -28,15 +29,13 @@ func initMysqlDatabase(m config.Mysql) *gorm.DB {
DefaultStringSize: 191, // 默认字符串类型长度
SkipInitializeWithVersion: false, // 根据版本自动配置
}
if db, err := gorm.Open(mysql.New(mysqlConfig), &gorm.Config{
DisableForeignKeyConstraintWhenMigrating: true, // 禁用自动创建外键约束
}); err != nil {
return nil
if db, err := gorm.Open(mysql.New(mysqlConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil {
panic(err)
} else {
db.InstanceSet("gorm:table_options", "ENGINE="+m.Engine)
sqlDB, _ := db.DB()
sqlDB.SetMaxIdleConns(m.MaxIdleConns)
sqlDB.SetMaxOpenConns(m.MaxOpenConns)
sqlDb, _ := db.DB()
sqlDb.SetMaxIdleConns(m.MaxIdleConns)
sqlDb.SetMaxOpenConns(m.MaxOpenConns)
global.Logger.Info("Mysql connect success")
return db
}