shaoyongjun 73c5062c45 to:sync
2024-02-21 12:04:40 +08:00

58 lines
1.3 KiB
Go

package repository
import (
"ai-gateway/common/config"
"ai-gateway/common/logs"
"database/sql"
"gorm.io/driver/mysql"
"gorm.io/gorm"
loglevel "gorm.io/gorm/logger"
"os"
"time"
)
var Db = getInstance()
func getInstance() *gorm.DB {
// unmarshal config
ll := logs.NewZapLogger()
if config.Instance.Mysql.LogSql {
ll = ll.LogMode(loglevel.Info)
} else {
ll = ll.LogMode(loglevel.Warn)
}
conn, instanceErr := gorm.Open(mysql.Open(config.Instance.Mysql.Dsn), &gorm.Config{
Logger: ll,
SkipDefaultTransaction: true,
})
if instanceErr != nil {
logs.NewLog("").Errorf("mysql_getInstance instanceErr: %v", instanceErr)
os.Exit(-1)
}
var sqlDB *sql.DB
sqlDB, instanceErr = conn.DB()
if instanceErr != nil {
logs.NewLog("").Errorf("mysql_getInstance sqlDB: %v", instanceErr)
os.Exit(-1)
}
// SetMaxIdleConns 设置空闲连接池中连接的最大数量
sqlDB.SetMaxIdleConns(config.Instance.Mysql.ConnMaxLifetime)
// SetMaxOpenConns 设置打开数据库连接的最大数量。
sqlDB.SetMaxOpenConns(config.Instance.Mysql.MaxOpenConn)
// SetConnMaxLifetime 设置了连接可复用的最大时间。
sqlDB.SetConnMaxLifetime(time.Duration(config.Instance.Mysql.MaxIdleConn) * time.Second)
db := conn
return db
}
func GetDB() *gorm.DB {
return Db
}