package internal import ( "gorm.io/gorm/schema" "log" "os" "time" "gorm.io/gorm" "gorm.io/gorm/logger" "miniapp/global" ) type DBBASE interface { GetLogMode() string } var Gorm = new(_gorm) type _gorm struct{} // Config gorm 自定义配置 // Author [SliverHorn](https://github.com/SliverHorn) func (g *_gorm) Config(prefix string, singular bool) *gorm.Config { config := &gorm.Config{ NamingStrategy: schema.NamingStrategy{ TablePrefix: prefix, SingularTable: singular, }, DisableForeignKeyConstraintWhenMigrating: true, } _default := logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{ SlowThreshold: 200 * time.Millisecond, LogLevel: logger.Warn, Colorful: true, }) var logMode DBBASE switch global.GVA_CONFIG.System.DbType { case "mysql": logMode = &global.GVA_CONFIG.Mysql case "pgsql": logMode = &global.GVA_CONFIG.Pgsql case "oracle": logMode = &global.GVA_CONFIG.Oracle default: logMode = &global.GVA_CONFIG.Mysql } switch logMode.GetLogMode() { case "silent", "Silent": config.Logger = _default.LogMode(logger.Silent) case "error", "Error": config.Logger = _default.LogMode(logger.Error) case "warn", "Warn": config.Logger = _default.LogMode(logger.Warn) case "info", "Info": config.Logger = _default.LogMode(logger.Info) default: config.Logger = _default.LogMode(logger.Info) } return config }