package helpers import ( "git.readonly.ch/bouzoure/pop-camarades/models" "gorm.io/driver/postgres" "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( postgres.Open(config.Database.DSN), &gormConfig, ) if err != nil { return database, err } db, err := database.DB() if err != nil { return database, err } db.SetMaxIdleConns(10) db.SetMaxOpenConns(50) 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 }