package myGorm import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" "log" "os" "strings" "time" ) type SimpleORM struct { user string password string host string name string charset string runMode string loggerConfig logger.Config loggerLevel string } func NewSimpleORM(user string, password string, host string, name string, charset string, runMode string) *SimpleORM { orm := &SimpleORM{ user: user, password: password, host: host, name: name, charset: charset, runMode: runMode, loggerConfig: logger.Config{ SlowThreshold: time.Second, // 慢 SQL 阈值 Colorful: false, // 禁用彩色打印 LogLevel: logger.Info, }, } if runMode == "release" { orm.loggerConfig.LogLevel = logger.Silent } return orm } func (t *SimpleORM) getDSN() string { if t.charset == "" { t.charset = "utf8mb4" } return fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=%s&parseTime=True&loc=Local", t.user, t.password, t.host, t.name, t.charset, ) } func (t *SimpleORM) SetLoggerConfig(l logger.Config) { t.loggerConfig = l } func (t *SimpleORM) SetLoggerLevel(level string) { if strings.ToLower(level) == "silent" { t.loggerConfig.LogLevel = logger.Silent } else if strings.ToLower(level) == "error" { t.loggerConfig.LogLevel = logger.Error } else if strings.ToLower(level) == "warn" { t.loggerConfig.LogLevel = logger.Warn } else if strings.ToLower(level) == "info" { t.loggerConfig.LogLevel = logger.Info } } func (t *SimpleORM) ConnectMysql() *gorm.DB { Db, err := gorm.Open( mysql.Open(t.getDSN()), &gorm.Config{ Logger: logger.New( log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer t.loggerConfig, ), }, ) if err != nil { panic("failed to connect database") } return Db }