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.
|
|
|
|
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)
|
|
|
|
|
}
|