75 lines
1.5 KiB
Go
75 lines
1.5 KiB
Go
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)
|
||
}
|