优化参数初始化方式
This commit is contained in:
@@ -5,17 +5,40 @@ import (
|
||||
"fmt"
|
||||
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/schema"
|
||||
)
|
||||
|
||||
func NewGorm(prefix, user, password, host, database string, port int) *gorm.DB {
|
||||
dsn := fmt.Sprintf("%s:%s@tcp(%s:%v)/%s?charset=utf8mb4&parseTime=True&loc=Local", user, password, host, port, database)
|
||||
func NewGorm(opts ...Option) *gorm.DB {
|
||||
defaultOpts := defaultOptions()
|
||||
for _, apply := range opts {
|
||||
apply(&defaultOpts)
|
||||
}
|
||||
|
||||
g, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
|
||||
if defaultOpts.Db == "" {
|
||||
panic("db is empty")
|
||||
}
|
||||
var dialector gorm.Dialector
|
||||
if defaultOpts.Db == "mysql" {
|
||||
if defaultOpts.Mysql == nil {
|
||||
panic("mysql is not supported")
|
||||
}
|
||||
|
||||
dsn := fmt.Sprintf("%s:%s@tcp(%s:%v)/%s?charset=utf8mb4&parseTime=True&loc=Local", defaultOpts.Mysql.User, defaultOpts.Mysql.Password, defaultOpts.Mysql.Host, defaultOpts.Mysql.Port, defaultOpts.Mysql.Database)
|
||||
dialector = mysql.Open(dsn)
|
||||
|
||||
} else if defaultOpts.Db == "sqlite" {
|
||||
if defaultOpts.Sqlite == nil {
|
||||
panic("sqlite is not supported")
|
||||
}
|
||||
dialector = sqlite.Open(defaultOpts.Sqlite.DbPath)
|
||||
}
|
||||
|
||||
db, err := gorm.Open(dialector, &gorm.Config{
|
||||
NamingStrategy: schema.NamingStrategy{
|
||||
TablePrefix: prefix, // 表名前缀,`Article` 的表名应该是 `it_articles`
|
||||
SingularTable: true, // 使用单数表名,启用该选项,此时,`Article` 的表名应该是 `it_article`
|
||||
TablePrefix: defaultOpts.Prefix, // 表名前缀,`Article` 的表名应该是 `it_articles`
|
||||
SingularTable: defaultOpts.SingularTable, // 使用单数表名,启用该选项,此时,`Article` 的表名应该是 `it_article`
|
||||
},
|
||||
Logger: NewGormxLogger(context.TODO()),
|
||||
})
|
||||
@@ -23,5 +46,10 @@ func NewGorm(prefix, user, password, host, database string, port int) *gorm.DB {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return g
|
||||
// 连接池设置
|
||||
// sqlDB, _ := db.DB()
|
||||
// sqlDB.SetMaxIdleConns(m.MaxIdleConns)
|
||||
// sqlDB.SetMaxOpenConns(m.MaxOpenConns)
|
||||
|
||||
return db
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user