budget-go/database/manager/manager.go
2024-09-14 23:37:03 +02:00

60 lines
1 KiB
Go

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
}