shaoyongjun f0e5646c25 to:sync
2024-09-29 14:08:55 +08:00

58 lines
1.4 KiB
Go

package repository
import (
"database/sql"
"gorm.io/driver/postgres"
"gorm.io/gorm"
loglevel "gorm.io/gorm/logger"
"mylomen_server/common/config"
"mylomen_server/common/logs"
"os"
"time"
)
var Db = getInstance()
func getInstance() *gorm.DB {
// unmarshal config
ll := logs.NewZapLogger()
if config.Instance.PgSql.LogSql {
ll = ll.LogMode(loglevel.Info)
} else {
ll = ll.LogMode(loglevel.Warn)
}
// 调用 Open 方法,传入驱动名和连接字符串
conn, instanceErr := gorm.Open(postgres.Open(config.Instance.PgSql.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.PgSql.ConnMaxLifetime)
// SetMaxOpenConns 设置打开数据库连接的最大数量。
sqlDB.SetMaxOpenConns(config.Instance.PgSql.MaxOpenConn)
// SetConnMaxLifetime 设置了连接可复用的最大时间。
sqlDB.SetConnMaxLifetime(time.Duration(config.Instance.PgSql.MaxIdleConn) * time.Second)
db := conn
return db
}
func GetDB() *gorm.DB {
return Db
}