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