42 lines
939 B
Go
42 lines
939 B
Go
|
package sql_client
|
||
|
|
||
|
import (
|
||
|
"gorm.io/gorm/logger"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
type Option func(*MySQL)
|
||
|
|
||
|
// WithLogLevel set gorm log level.
|
||
|
func WithLogLevel(level string) Option {
|
||
|
return func(mysqli *MySQL) {
|
||
|
var gormLogLevel logger.LogLevel
|
||
|
|
||
|
switch strings.ToLower(level) {
|
||
|
case "panic", "fatal", "error":
|
||
|
gormLogLevel = logger.Error
|
||
|
case "warn", "warning":
|
||
|
gormLogLevel = logger.Warn
|
||
|
case "info", "debug", "trace":
|
||
|
gormLogLevel = logger.Info
|
||
|
case "silent":
|
||
|
gormLogLevel = logger.Silent
|
||
|
default:
|
||
|
gormLogLevel = logger.Silent
|
||
|
}
|
||
|
|
||
|
newLogger := mysqli.gormConf.Logger.LogMode(gormLogLevel)
|
||
|
|
||
|
mysqli.gormConf.Logger = newLogger
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// WithPerformance disable default transaction and create a prepared statement
|
||
|
// related doc: https://gorm.io/docs/performance.html
|
||
|
func WithPerformance() Option {
|
||
|
return func(mysqli *MySQL) {
|
||
|
mysqli.gormConf.SkipDefaultTransaction = true
|
||
|
mysqli.gormConf.PrepareStmt = true
|
||
|
}
|
||
|
}
|