56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
|
package initialize
|
||
|
|
||
|
import (
|
||
|
_ "github.com/go-sql-driver/mysql"
|
||
|
"gorm.io/driver/mysql"
|
||
|
"gorm.io/gorm"
|
||
|
"miniapp/config"
|
||
|
"miniapp/global"
|
||
|
"miniapp/initialize/internal"
|
||
|
)
|
||
|
|
||
|
// GormMysql 初始化Mysql数据库
|
||
|
// Author [piexlmax](https://github.com/piexlmax)
|
||
|
// Author [SliverHorn](https://github.com/SliverHorn)
|
||
|
func GormMysql() *gorm.DB {
|
||
|
m := global.GVA_CONFIG.Mysql
|
||
|
if m.Dbname == "" {
|
||
|
return nil
|
||
|
}
|
||
|
mysqlConfig := mysql.Config{
|
||
|
DSN: m.Dsn(), // DSN data source name
|
||
|
DefaultStringSize: 191, // string 类型字段的默认长度
|
||
|
SkipInitializeWithVersion: false, // 根据版本自动配置
|
||
|
}
|
||
|
if db, err := gorm.Open(mysql.New(mysqlConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil {
|
||
|
return nil
|
||
|
} else {
|
||
|
db.InstanceSet("gorm:table_options", "ENGINE="+m.Engine)
|
||
|
sqlDB, _ := db.DB()
|
||
|
sqlDB.SetMaxIdleConns(m.MaxIdleConns)
|
||
|
sqlDB.SetMaxOpenConns(m.MaxOpenConns)
|
||
|
return db
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// GormMysqlByConfig 初始化Mysql数据库用过传入配置
|
||
|
func GormMysqlByConfig(m config.Mysql) *gorm.DB {
|
||
|
if m.Dbname == "" {
|
||
|
return nil
|
||
|
}
|
||
|
mysqlConfig := mysql.Config{
|
||
|
DSN: m.Dsn(), // DSN data source name
|
||
|
DefaultStringSize: 191, // string 类型字段的默认长度
|
||
|
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=InnoDB")
|
||
|
sqlDB, _ := db.DB()
|
||
|
sqlDB.SetMaxIdleConns(m.MaxIdleConns)
|
||
|
sqlDB.SetMaxOpenConns(m.MaxOpenConns)
|
||
|
return db
|
||
|
}
|
||
|
}
|