55 lines
797 B
Go
55 lines
797 B
Go
package db
|
|
|
|
import (
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
var Connection *gorm.DB
|
|
|
|
func InitDb() error {
|
|
dbFile := getDbFilePath()
|
|
|
|
var err error
|
|
Connection, err = gorm.Open(sqlite.Open(dbFile), &gorm.Config{})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
structs := []interface{}{
|
|
&Key{},
|
|
&User{},
|
|
&UserSession{},
|
|
&System{},
|
|
&Group{},
|
|
&SystemGroup{},
|
|
&Grant{},
|
|
}
|
|
for _, s := range structs {
|
|
err := Connection.AutoMigrate(s)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func getDbFilePath() string {
|
|
dbFile := os.Getenv("CLORTHO_DB_FILE")
|
|
if len(dbFile) == 0 {
|
|
dbFile = "clortho.db"
|
|
}
|
|
return dbFile
|
|
}
|
|
|
|
func ResetDb() {
|
|
dbFile := getDbFilePath()
|
|
err := os.Remove(dbFile)
|
|
if err != nil {
|
|
log.Println("Could not delete DB file:", dbFile, err)
|
|
}
|
|
}
|