Files
Gelvin/app/application/database.go
2022-09-30 14:59:51 -05:00

53 lines
865 B
Go

package application
import (
"errors"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
type DatabaseType uint8
const (
SQL DatabaseType = iota
SQLite3
)
type Database struct {
databaseType DatabaseType
path string
db *gorm.DB
mode Mode
}
func (d *Database) open() error {
var err error
switch d.databaseType {
case SQL:
err = errors.New("not yet implemented")
case SQLite3:
var config gorm.Config
if d.mode == Debug {
config = gorm.Config{}
} else {
config = gorm.Config{Logger: logger.Default.LogMode(logger.Silent)}
}
db, err := gorm.Open(sqlite.Open(d.path), &config)
if err == nil {
d.db = db
}
default:
err = errors.New("unknown database type")
}
return err
}
func (d *Database) close() error {
db, err := d.db.DB()
if err == nil {
err = db.Close()
}
return err
}