54 lines
866 B
Go
54 lines
866 B
Go
package helpers
|
|
|
|
import (
|
|
"log"
|
|
|
|
"git.readonly.ch/bouzoure/popvaud-people/models"
|
|
"github.com/glebarez/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var database *gorm.DB
|
|
var connected bool
|
|
|
|
func GetDatabase() (*gorm.DB, error) {
|
|
if connected {
|
|
return database, nil
|
|
}
|
|
|
|
return connectDatabase()
|
|
}
|
|
|
|
func connectDatabase() (*gorm.DB, error) {
|
|
config, err := GetConfig()
|
|
if err != nil {
|
|
// TODO: Handle exception
|
|
log.Fatal(err)
|
|
}
|
|
|
|
database, err = gorm.Open(
|
|
sqlite.Open(config.Database.Location),
|
|
&gorm.Config{},
|
|
)
|
|
if err != nil {
|
|
// TODO: Handle exception
|
|
log.Fatal(err)
|
|
}
|
|
|
|
err = database.AutoMigrate(
|
|
&models.User{},
|
|
&models.ParentSection{},
|
|
&models.Section{},
|
|
&models.Person{},
|
|
&models.ManageSection{},
|
|
&models.ManageParentSection{},
|
|
)
|
|
if err != nil {
|
|
// TODO: Handle exception
|
|
log.Fatal(err)
|
|
}
|
|
|
|
connected = true
|
|
|
|
return database, err
|
|
}
|