- update gorm
continuous-integration/drone/push Build is failing Details

master
李光春 2 years ago
parent 3c88276d5b
commit 59f6113ff8

@ -10,9 +10,20 @@ import (
)
type ConfigGormClient struct {
Dns string // 地址
Log bool // 日志
LogUrl string // 日志路径
Dns string // 地址
Log struct {
Status bool // 状态
Path string // 路径
Slow int64 // 慢SQL阈值
Level string // 级别
NotFoundError bool // 忽略ErrRecordNotFound记录未找到错误
Colorful bool // 禁用彩色打印
} // 日志
Conn struct {
SetMaxIdle int // 设置空闲连接池中连接的最大数量
SetMaxOpen int // 设置打开数据库连接的最大数量
SetConnMaxLifetime int64 // 设置了连接可复用的最大时间
} // 连接
}
// GormClient

@ -16,19 +16,35 @@ func NewGormMysqlClient(config *ConfigGormClient) (*GormClient, error) {
c := &GormClient{config: config}
// 判断路径
if c.config.LogUrl == "" {
if c.config.Log.Path == "" {
logsUrl = "/logs/mysql"
} else {
logsUrl = c.config.Log.Path
}
if c.config.Log == true {
if c.config.Log.Status == true {
var slowThreshold time.Duration
var logLevel logger.LogLevel
if c.config.Log.Slow == 0 {
slowThreshold = 100 * time.Millisecond
} else {
slowThreshold = time.Duration(c.config.Log.Slow)
}
if c.config.Log.Level == "Error" {
logLevel = logger.Error
} else if c.config.Log.Level == "Warn" {
logLevel = logger.Warn
} else {
logLevel = logger.Info
}
c.Db, err = gorm.Open(mysql.Open(c.config.Dns), &gorm.Config{
Logger: logger.New(
writer{},
logger.Config{
SlowThreshold: time.Second, // 慢 SQL 阈值
LogLevel: logger.Info, // 日志级别
IgnoreRecordNotFoundError: true, // 忽略ErrRecordNotFound记录未找到错误
Colorful: false, // 禁用彩色打印
SlowThreshold: slowThreshold, // 慢SQL阈值
LogLevel: logLevel, // 日志级别
IgnoreRecordNotFoundError: c.config.Log.NotFoundError, // 忽略ErrRecordNotFound记录未找到错误
Colorful: c.config.Log.Colorful, // 禁用彩色打印
},
),
NowFunc: func() time.Time {
@ -48,9 +64,26 @@ func NewGormMysqlClient(config *ConfigGormClient) (*GormClient, error) {
return nil, errors.New(fmt.Sprintf("检查连接失败:%v", err))
}
sqlDB.SetMaxIdleConns(10) // 设置空闲连接池中连接的最大数量
sqlDB.SetMaxOpenConns(100) // 设置打开数据库连接的最大数量。
sqlDB.SetConnMaxLifetime(time.Second * 600) // 设置了连接可复用的最大时间。
// 设置空闲连接池中连接的最大数量
if c.config.Conn.SetMaxIdle == 0 {
sqlDB.SetMaxIdleConns(10)
} else {
sqlDB.SetMaxIdleConns(c.config.Conn.SetMaxIdle)
}
// 设置打开数据库连接的最大数量
if c.config.Conn.SetMaxOpen == 0 {
sqlDB.SetMaxOpenConns(100)
} else {
sqlDB.SetMaxOpenConns(c.config.Conn.SetMaxOpen)
}
// 设置了连接可复用的最大时间
if c.config.Conn.SetConnMaxLifetime == 0 {
sqlDB.SetConnMaxLifetime(time.Second * 600)
} else {
sqlDB.SetConnMaxLifetime(time.Duration(c.config.Conn.SetConnMaxLifetime))
}
return c, nil
}

@ -12,25 +12,40 @@ import (
func NewGormPostgresClient(config *ConfigGormClient) (*GormClient, error) {
var err error
c := &GormClient{}
c.config = config
// 判断路径
if c.config.LogUrl == "" {
if c.config.Log.Path == "" {
logsUrl = "/logs/postgresql"
} else {
logsUrl = c.config.Log.Path
}
var err error
if c.config.Log == true {
if c.config.Log.Status == true {
var slowThreshold time.Duration
var logLevel logger.LogLevel
if c.config.Log.Slow == 0 {
slowThreshold = 100 * time.Millisecond
} else {
slowThreshold = time.Duration(c.config.Log.Slow)
}
if c.config.Log.Level == "Error" {
logLevel = logger.Error
} else if c.config.Log.Level == "Warn" {
logLevel = logger.Warn
} else {
logLevel = logger.Info
}
c.Db, err = gorm.Open(postgres.Open(c.config.Dns), &gorm.Config{
Logger: logger.New(
writer{},
logger.Config{
SlowThreshold: time.Second, // 慢 SQL 阈值
LogLevel: logger.Info, // 日志级别
IgnoreRecordNotFoundError: true, // 忽略ErrRecordNotFound记录未找到错误
Colorful: false, // 禁用彩色打印
SlowThreshold: slowThreshold, // 慢SQL阈值
LogLevel: logLevel, // 日志级别
IgnoreRecordNotFoundError: c.config.Log.NotFoundError, // 忽略ErrRecordNotFound记录未找到错误
Colorful: c.config.Log.Colorful, // 禁用彩色打印
},
),
NowFunc: func() time.Time {
@ -50,34 +65,66 @@ func NewGormPostgresClient(config *ConfigGormClient) (*GormClient, error) {
return nil, errors.New(fmt.Sprintf("检查连接失败:%v", err))
}
sqlDB.SetMaxIdleConns(10) // 设置空闲连接池中连接的最大数量
sqlDB.SetMaxOpenConns(100) // 设置打开数据库连接的最大数量。
sqlDB.SetConnMaxLifetime(time.Second * 600) // 设置了连接可复用的最大时间。
// 设置空闲连接池中连接的最大数量
if c.config.Conn.SetMaxIdle == 0 {
sqlDB.SetMaxIdleConns(10)
} else {
sqlDB.SetMaxIdleConns(c.config.Conn.SetMaxIdle)
}
// 设置打开数据库连接的最大数量
if c.config.Conn.SetMaxOpen == 0 {
sqlDB.SetMaxOpenConns(100)
} else {
sqlDB.SetMaxOpenConns(c.config.Conn.SetMaxOpen)
}
// 设置了连接可复用的最大时间
if c.config.Conn.SetConnMaxLifetime == 0 {
sqlDB.SetConnMaxLifetime(time.Second * 600)
} else {
sqlDB.SetConnMaxLifetime(time.Duration(c.config.Conn.SetConnMaxLifetime))
}
return c, nil
}
func NewGormPostgresqlClient(config *ConfigGormClient) (*GormClient, error) {
var err error
c := &GormClient{}
c.config = config
// 判断路径
if c.config.LogUrl == "" {
if c.config.Log.Path == "" {
logsUrl = "/logs/postgresql"
} else {
logsUrl = c.config.Log.Path
}
var err error
if c.config.Log == true {
if c.config.Log.Status == true {
var slowThreshold time.Duration
var logLevel logger.LogLevel
if c.config.Log.Slow == 0 {
slowThreshold = 100 * time.Millisecond
} else {
slowThreshold = time.Duration(c.config.Log.Slow)
}
if c.config.Log.Level == "Error" {
logLevel = logger.Error
} else if c.config.Log.Level == "Warn" {
logLevel = logger.Warn
} else {
logLevel = logger.Info
}
c.Db, err = gorm.Open(postgres.Open(c.config.Dns), &gorm.Config{
Logger: logger.New(
writer{},
logger.Config{
SlowThreshold: time.Second, // 慢 SQL 阈值
LogLevel: logger.Info, // 日志级别
IgnoreRecordNotFoundError: true, // 忽略ErrRecordNotFound记录未找到错误
Colorful: false, // 禁用彩色打印
SlowThreshold: slowThreshold, // 慢SQL阈值
LogLevel: logLevel, // 日志级别
IgnoreRecordNotFoundError: c.config.Log.NotFoundError, // 忽略ErrRecordNotFound记录未找到错误
Colorful: c.config.Log.Colorful, // 禁用彩色打印
},
),
NowFunc: func() time.Time {
@ -97,9 +144,26 @@ func NewGormPostgresqlClient(config *ConfigGormClient) (*GormClient, error) {
return nil, errors.New(fmt.Sprintf("检查连接失败:%v", err))
}
sqlDB.SetMaxIdleConns(10) // 设置空闲连接池中连接的最大数量
sqlDB.SetMaxOpenConns(100) // 设置打开数据库连接的最大数量。
sqlDB.SetConnMaxLifetime(time.Second * 600) // 设置了连接可复用的最大时间。
// 设置空闲连接池中连接的最大数量
if c.config.Conn.SetMaxIdle == 0 {
sqlDB.SetMaxIdleConns(10)
} else {
sqlDB.SetMaxIdleConns(c.config.Conn.SetMaxIdle)
}
// 设置打开数据库连接的最大数量
if c.config.Conn.SetMaxOpen == 0 {
sqlDB.SetMaxOpenConns(100)
} else {
sqlDB.SetMaxOpenConns(c.config.Conn.SetMaxOpen)
}
// 设置了连接可复用的最大时间
if c.config.Conn.SetConnMaxLifetime == 0 {
sqlDB.SetConnMaxLifetime(time.Second * 600)
} else {
sqlDB.SetConnMaxLifetime(time.Duration(c.config.Conn.SetConnMaxLifetime))
}
return c, nil
}

@ -0,0 +1,89 @@
package dorm
import (
"errors"
"fmt"
"github.com/dtapps/go-library/utils/gotime"
"github.com/glebarez/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"time"
)
func NewGormSqliteClient(config *ConfigGormClient) (*GormClient, error) {
var err error
c := &GormClient{config: config}
// 判断路径
if c.config.Log.Path == "" {
logsUrl = "/logs/sqlite"
} else {
logsUrl = c.config.Log.Path
}
if c.config.Log.Status == true {
var slowThreshold time.Duration
var logLevel logger.LogLevel
if c.config.Log.Slow == 0 {
slowThreshold = 100 * time.Millisecond
} else {
slowThreshold = time.Duration(c.config.Log.Slow)
}
if c.config.Log.Level == "Error" {
logLevel = logger.Error
} else if c.config.Log.Level == "Warn" {
logLevel = logger.Warn
} else {
logLevel = logger.Info
}
c.Db, err = gorm.Open(sqlite.Open(c.config.Dns), &gorm.Config{
Logger: logger.New(
writer{},
logger.Config{
SlowThreshold: slowThreshold, // 慢SQL阈值
LogLevel: logLevel, // 日志级别
IgnoreRecordNotFoundError: c.config.Log.NotFoundError, // 忽略ErrRecordNotFound记录未找到错误
Colorful: c.config.Log.Colorful, // 禁用彩色打印
},
),
NowFunc: func() time.Time {
return gotime.Current().Now().Local()
},
})
} else {
c.Db, err = gorm.Open(sqlite.Open(c.config.Dns), &gorm.Config{})
}
if err != nil {
return nil, errors.New(fmt.Sprintf("连接失败:%v", err))
}
sqlDB, err := c.Db.DB()
if err != nil {
return nil, errors.New(fmt.Sprintf("检查连接失败:%v", err))
}
// 设置空闲连接池中连接的最大数量
if c.config.Conn.SetMaxIdle == 0 {
sqlDB.SetMaxIdleConns(10)
} else {
sqlDB.SetMaxIdleConns(c.config.Conn.SetMaxIdle)
}
// 设置打开数据库连接的最大数量
if c.config.Conn.SetMaxOpen == 0 {
sqlDB.SetMaxOpenConns(100)
} else {
sqlDB.SetMaxOpenConns(c.config.Conn.SetMaxOpen)
}
// 设置了连接可复用的最大时间
if c.config.Conn.SetConnMaxLifetime == 0 {
sqlDB.SetConnMaxLifetime(time.Second * 600)
} else {
sqlDB.SetConnMaxLifetime(time.Duration(c.config.Conn.SetConnMaxLifetime))
}
return c, nil
}

@ -0,0 +1,89 @@
package dorm
import (
"errors"
"fmt"
"github.com/dtapps/go-library/utils/gotime"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"time"
)
func NewGormSqliteCgoClient(config *ConfigGormClient) (*GormClient, error) {
var err error
c := &GormClient{config: config}
// 判断路径
if c.config.Log.Path == "" {
logsUrl = "/logs/sqlite"
} else {
logsUrl = c.config.Log.Path
}
if c.config.Log.Status == true {
var slowThreshold time.Duration
var logLevel logger.LogLevel
if c.config.Log.Slow == 0 {
slowThreshold = 100 * time.Millisecond
} else {
slowThreshold = time.Duration(c.config.Log.Slow)
}
if c.config.Log.Level == "Error" {
logLevel = logger.Error
} else if c.config.Log.Level == "Warn" {
logLevel = logger.Warn
} else {
logLevel = logger.Info
}
c.Db, err = gorm.Open(sqlite.Open(c.config.Dns), &gorm.Config{
Logger: logger.New(
writer{},
logger.Config{
SlowThreshold: slowThreshold, // 慢SQL阈值
LogLevel: logLevel, // 日志级别
IgnoreRecordNotFoundError: c.config.Log.NotFoundError, // 忽略ErrRecordNotFound记录未找到错误
Colorful: c.config.Log.Colorful, // 禁用彩色打印
},
),
NowFunc: func() time.Time {
return gotime.Current().Now().Local()
},
})
} else {
c.Db, err = gorm.Open(sqlite.Open(c.config.Dns), &gorm.Config{})
}
if err != nil {
return nil, errors.New(fmt.Sprintf("连接失败:%v", err))
}
sqlDB, err := c.Db.DB()
if err != nil {
return nil, errors.New(fmt.Sprintf("检查连接失败:%v", err))
}
// 设置空闲连接池中连接的最大数量
if c.config.Conn.SetMaxIdle == 0 {
sqlDB.SetMaxIdleConns(10)
} else {
sqlDB.SetMaxIdleConns(c.config.Conn.SetMaxIdle)
}
// 设置打开数据库连接的最大数量
if c.config.Conn.SetMaxOpen == 0 {
sqlDB.SetMaxOpenConns(100)
} else {
sqlDB.SetMaxOpenConns(c.config.Conn.SetMaxOpen)
}
// 设置了连接可复用的最大时间
if c.config.Conn.SetConnMaxLifetime == 0 {
sqlDB.SetConnMaxLifetime(time.Second * 600)
} else {
sqlDB.SetConnMaxLifetime(time.Duration(c.config.Conn.SetConnMaxLifetime))
}
return c, nil
}

@ -16,19 +16,35 @@ func NewGormSqlServerClient(config *ConfigGormClient) (*GormClient, error) {
c := &GormClient{config: config}
// 判断路径
if c.config.LogUrl == "" {
if c.config.Log.Path == "" {
logsUrl = "/logs/sqlserver"
} else {
logsUrl = c.config.Log.Path
}
if c.config.Log == true {
if c.config.Log.Status == true {
var slowThreshold time.Duration
var logLevel logger.LogLevel
if c.config.Log.Slow == 0 {
slowThreshold = 100 * time.Millisecond
} else {
slowThreshold = time.Duration(c.config.Log.Slow)
}
if c.config.Log.Level == "Error" {
logLevel = logger.Error
} else if c.config.Log.Level == "Warn" {
logLevel = logger.Warn
} else {
logLevel = logger.Info
}
c.Db, err = gorm.Open(sqlserver.Open(c.config.Dns), &gorm.Config{
Logger: logger.New(
writer{},
logger.Config{
SlowThreshold: time.Second, // 慢 SQL 阈值
LogLevel: logger.Info, // 日志级别
IgnoreRecordNotFoundError: true, // 忽略ErrRecordNotFound记录未找到错误
Colorful: false, // 禁用彩色打印
SlowThreshold: slowThreshold, // 慢SQL阈值
LogLevel: logLevel, // 日志级别
IgnoreRecordNotFoundError: c.config.Log.NotFoundError, // 忽略ErrRecordNotFound记录未找到错误
Colorful: c.config.Log.Colorful, // 禁用彩色打印
},
),
NowFunc: func() time.Time {
@ -48,9 +64,26 @@ func NewGormSqlServerClient(config *ConfigGormClient) (*GormClient, error) {
return nil, errors.New(fmt.Sprintf("检查连接失败:%v", err))
}
sqlDB.SetMaxIdleConns(10) // 设置空闲连接池中连接的最大数量
sqlDB.SetMaxOpenConns(100) // 设置打开数据库连接的最大数量。
sqlDB.SetConnMaxLifetime(time.Second * 600) // 设置了连接可复用的最大时间。
// 设置空闲连接池中连接的最大数量
if c.config.Conn.SetMaxIdle == 0 {
sqlDB.SetMaxIdleConns(10)
} else {
sqlDB.SetMaxIdleConns(c.config.Conn.SetMaxIdle)
}
// 设置打开数据库连接的最大数量
if c.config.Conn.SetMaxOpen == 0 {
sqlDB.SetMaxOpenConns(100)
} else {
sqlDB.SetMaxOpenConns(c.config.Conn.SetMaxOpen)
}
// 设置了连接可复用的最大时间
if c.config.Conn.SetConnMaxLifetime == 0 {
sqlDB.SetConnMaxLifetime(time.Second * 600)
} else {
sqlDB.SetConnMaxLifetime(time.Duration(c.config.Conn.SetConnMaxLifetime))
}
return c, nil
}

Loading…
Cancel
Save