Files
2026-02-27 13:54:01 +08:00

44 lines
1.1 KiB
Go

package initialize
import (
"sundynix-go/config"
"sundynix-go/global"
"sundynix-go/initialize/internal"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
// GormMysql 初始化Mysql数据库
func GormMysql() *gorm.DB {
m := global.Config.Mysql
return initMysqlDatabase(m)
}
// GromMysqlByConfig 根据配置初始化Mysql数据库
func GromMysqlByConfig(m config.Mysql) *gorm.DB {
return initMysqlDatabase(m)
}
// initMysqlDatabase 初始化Mysql数据库的辅助函数
func initMysqlDatabase(m config.Mysql) *gorm.DB {
if m.Dbname == "" {
return nil
}
mysqlConfig := mysql.Config{
DSN: m.Dsn(), //dsn
DefaultStringSize: 191, // 默认字符串类型长度
SkipInitializeWithVersion: false, // 根据版本自动配置
}
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)
global.Logger.Info("Mysql connect success")
return db
}
}