Files
DivaCode/internal/storage/sqlite.go

49 lines
904 B
Go

package storage
import (
"database/sql"
_ "modernc.org/sqlite"
)
type DB struct {
*sql.DB
}
func Open(path string) (*DB, error) {
db, err := sql.Open("sqlite", path+"?_pragma=journal_mode(WAL)&_pragma=busy_timeout(5000)&_pragma=foreign_keys(1)")
if err != nil {
return nil, err
}
if err := db.Ping(); err != nil {
return nil, err
}
return &DB{db}, nil
}
func (db *DB) Migrate() error {
for _, m := range migrations {
if err := db.Exec(m); err != nil {
return err
}
}
return nil
}
func (db *DB) Exec(query string, args ...interface{}) error {
_, err := db.DB.Exec(query, args...)
return err
}
func (db *DB) Query(query string, args ...interface{}) (*sql.Rows, error) {
return db.DB.Query(query, args...)
}
func (db *DB) QueryRow(query string, args ...interface{}) *sql.Row {
return db.DB.QueryRow(query, args...)
}
func (db *DB) Close() error {
return db.DB.Close()
}