58 lines
1.4 KiB
Go
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.Warn)
|
|
} 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
|
|
}
|