app-cloudep-wallet-service/pkg/lib/sql_client/options.go

42 lines
939 B
Go
Raw Permalink Normal View History

2025-04-16 09:24:54 +00:00
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
}
}