58 lines
1.3 KiB
Go
Raw Normal View History

2023-06-04 22:54:54 +08:00
package repository
import (
"ai-gateway/common/config"
2024-02-21 12:04:40 +08:00
"ai-gateway/common/logs"
2023-06-04 22:54:54 +08:00
"database/sql"
"gorm.io/driver/mysql"
"gorm.io/gorm"
loglevel "gorm.io/gorm/logger"
2024-02-21 12:04:40 +08:00
"os"
"time"
2023-06-04 22:54:54 +08:00
)
var Db = getInstance()
func getInstance() *gorm.DB {
// unmarshal config
2024-02-21 12:04:40 +08:00
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{
2023-06-04 22:54:54 +08:00
Logger: ll,
SkipDefaultTransaction: true,
})
if instanceErr != nil {
2024-02-21 12:04:40 +08:00
logs.NewLog("").Errorf("mysql_getInstance instanceErr: %v", instanceErr)
2023-06-04 22:54:54 +08:00
os.Exit(-1)
}
var sqlDB *sql.DB
2024-02-21 12:04:40 +08:00
sqlDB, instanceErr = conn.DB()
2023-06-04 22:54:54 +08:00
if instanceErr != nil {
2024-02-21 12:04:40 +08:00
logs.NewLog("").Errorf("mysql_getInstance sqlDB: %v", instanceErr)
2023-06-04 22:54:54 +08:00
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)
2024-02-21 12:04:40 +08:00
db := conn
return db
2023-06-04 22:54:54 +08:00
}
2024-02-21 12:04:40 +08:00
func GetDB() *gorm.DB {
return Db
2023-06-04 22:54:54 +08:00
}