package db import ( "database/sql" "fmt" _ "github.com/mattn/go-sqlite3" ) func Open(path string) (*sql.DB, error) { dsn := path + "?_journal_mode=WAL&_busy_timeout=5000" database, err := sql.Open("sqlite3", dsn) if err != nil { return nil, fmt.Errorf("open db: %w", err) } pragmas := []string{ "PRAGMA foreign_keys = ON", "PRAGMA journal_mode = WAL", } for _, p := range pragmas { if _, err := database.Exec(p); err != nil { database.Close() return nil, fmt.Errorf("pragma %s: %w", p, err) } } return database, nil }