58 lines
1.4 KiB
Go
Raw Normal View History

2023-06-04 22:54:54 +08:00
package repository
import (
"database/sql"
2024-09-29 14:08:55 +08:00
"gorm.io/driver/postgres"
2023-06-04 22:54:54 +08:00
"gorm.io/gorm"
loglevel "gorm.io/gorm/logger"
2024-09-29 14:08:55 +08:00
"mylomen_server/common/config"
"mylomen_server/common/logs"
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()
2024-09-29 14:08:55 +08:00
if config.Instance.PgSql.LogSql {
2024-09-30 15:41:00 +08:00
ll = ll.LogMode(loglevel.Warn)
2024-02-21 12:04:40 +08:00
} else {
ll = ll.LogMode(loglevel.Warn)
}
2024-09-29 14:08:55 +08:00
// 调用 Open 方法,传入驱动名和连接字符串
conn, instanceErr := gorm.Open(postgres.Open(config.Instance.PgSql.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 设置空闲连接池中连接的最大数量
2024-09-29 14:08:55 +08:00
sqlDB.SetMaxIdleConns(config.Instance.PgSql.ConnMaxLifetime)
2023-06-04 22:54:54 +08:00
// SetMaxOpenConns 设置打开数据库连接的最大数量。
2024-09-29 14:08:55 +08:00
sqlDB.SetMaxOpenConns(config.Instance.PgSql.MaxOpenConn)
2023-06-04 22:54:54 +08:00
// SetConnMaxLifetime 设置了连接可复用的最大时间。
2024-09-29 14:08:55 +08:00
sqlDB.SetConnMaxLifetime(time.Duration(config.Instance.PgSql.MaxIdleConn) * time.Second)
2023-06-04 22:54:54 +08:00
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
}