pop-camarades/helpers/database.go

65 lines
1 KiB
Go

package helpers
import (
"git.readonly.ch/bouzoure/pop-camarades/models"
"github.com/glebarez/sqlite"
"gorm.io/gorm"
gormLogger "gorm.io/gorm/logger"
)
var database *gorm.DB
var connected bool
func GetDatabase() (*gorm.DB, error) {
if connected {
return database, nil
}
config, err := GetConfig()
if err != nil {
return database, err
}
logLevel := gormLogger.Error
if config.Debug {
logLevel = gormLogger.Info
}
gormConfig := gorm.Config{
Logger: gormLogger.Default.LogMode(logLevel),
}
database, err = gorm.Open(
sqlite.Open(config.Database.Location),
&gormConfig,
)
if err != nil {
return database, err
}
db, err := database.DB()
if err != nil {
return database, err
}
db.SetMaxOpenConns(1)
err = database.AutoMigrate(
&models.User{},
&models.UserSavedSession{},
&models.Section{},
&models.Role{},
&models.UserRole{},
&models.Person{},
&models.List{},
&models.ListItem{},
&models.Field{},
&models.FieldValue{},
)
if err != nil {
return database, err
}
connected = true
return database, nil
}