优化参数初始化方式

This commit is contained in:
Yun
2024-01-10 23:08:32 +08:00
parent 9c105ceee6
commit 3543f629c6
4 changed files with 97 additions and 6 deletions
+34 -6
View File
@@ -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
}