You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

30 lines
552 B

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
}