package storage import ( "database/sql" "fmt" "strings" _ "modernc.org/sqlite" ) var pragmas = map[string]string{ `journal_mode`: `wal`, `synchronous`: `normal`, `busy_timeout`: `30000`, } func buildSqliteDsn(path string, pragmas map[string]string) string { pragmastrs := make([]string, len(pragmas)) i := 0 for k, v := range pragmas { pragmastrs[i] = (fmt.Sprintf(`pragma=%s(%s)`, k, v)) i++ } return path + "?" + "mode=rwc&" + strings.Join(pragmastrs, "&") } func Open(path string) (*sql.DB, error) { dsn := buildSqliteDsn(path, pragmas) db, err := sql.Open("sqlite", dsn) if err != nil { return nil, err } return db, nil }