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 }