43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package initialize
|
|
|
|
import (
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
"sundynix-go/config"
|
|
"sundynix-go/global"
|
|
"sundynix-go/initialize/internal"
|
|
)
|
|
|
|
// 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
|
|
}
|
|
}
|