feat(storage): add SQLite wrapper and full schema migrations (15 tables)

This commit is contained in:
2026-06-10 00:48:44 +03:30
parent 57cfe4516f
commit d29b194f73
2 changed files with 161 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
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()
}