package manager import ( "log" "os" "time" "gitnet.fr/deblan/budget/config" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" lg "gorm.io/gorm/logger" ) type Manager struct { Db *gorm.DB } var manager *Manager func Get() *Manager { if manager == nil { manager = &Manager{} config := config.Get() dsn := config.Database.Dsn var logLevel lg.LogLevel if config.Log.Level == "debug" { logLevel = lg.Info } else if config.Log.Level == "warning" { logLevel = lg.Warn } else if config.Log.Level == "quiet" { logLevel = lg.Silent } else { logLevel = lg.Silent } db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ Logger: logger.New( log.New(os.Stdout, "\r\n", log.LstdFlags), lg.Config{ SlowThreshold: time.Second, LogLevel: lg.LogLevel(logLevel), IgnoreRecordNotFoundError: true, ParameterizedQueries: true, Colorful: true, }, ), }) if err != nil { log.Fatal(err) } manager.Db = db } return manager }