You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.5 KiB

1 month ago
package rds
import (
"epur-pay/model"
myLogger "epur-pay/pkg/logger"
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"time"
)
var (
DB *gorm.DB
)
func New(Rds *model.Rds, RunMode string) {
var (
err error
loggerConfig logger.Config
)
dns := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=True&loc=Local",
Rds.User,
Rds.PassWord,
Rds.Host,
Rds.Port,
Rds.Name,
Rds.CharSet)
if RunMode == "release" {
loggerConfig = logger.Config{
//慢SQL阈值
SlowThreshold: time.Duration(Rds.SlowThreshold) * time.Millisecond,
//设置日志级别只有Warn以上才会打印sql
LogLevel: logger.Warn,
Colorful: false,
IgnoreRecordNotFoundError: true,
}
} else {
loggerConfig = logger.Config{
//慢SQL阈值
SlowThreshold: time.Duration(Rds.SlowThreshold) * time.Millisecond,
//设置日志级别只有Warn以上才会打印sql
LogLevel: logger.Info,
Colorful: false,
IgnoreRecordNotFoundError: true,
}
}
slowLogger := logger.New(
myLogger.RdsLogger,
loggerConfig,
)
if DB, err = gorm.Open(
mysql.Open(dns),
&gorm.Config{
//禁用全局事务
SkipDefaultTransaction: true,
Logger: slowLogger,
}); err != nil {
myLogger.AccessLogger.Error("connect rds error!")
panic(err.Error())
}
fmt.Println("Rds ok")
sdb, _ := DB.DB()
sdb.SetMaxIdleConns(Rds.MaxIdleConns)
sdb.SetMaxOpenConns(Rds.MaxOpenConns)
sdb.SetConnMaxLifetime(60 * time.Second)
}