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