update to support postgresql and add godocs
This commit is contained in:
22
db/local.go
22
db/local.go
@@ -4,6 +4,7 @@ import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"strings"
|
||||
"vctp/db/queries"
|
||||
|
||||
//_ "github.com/tursodatabase/libsql-client-go/libsql"
|
||||
@@ -28,7 +29,7 @@ func (d *LocalDB) DB() *sqlx.DB {
|
||||
return d.db
|
||||
}
|
||||
|
||||
func (d *LocalDB) Queries() *queries.Queries {
|
||||
func (d *LocalDB) Queries() Querier {
|
||||
return d.queries
|
||||
}
|
||||
|
||||
@@ -42,7 +43,7 @@ func (d *LocalDB) Close() error {
|
||||
return d.db.Close()
|
||||
}
|
||||
|
||||
func newLocalDB(logger *slog.Logger, path string) (*LocalDB, error) {
|
||||
func newLocalDB(logger *slog.Logger, dsn string) (*LocalDB, error) {
|
||||
|
||||
// TODO - work out if https://kerkour.com/sqlite-for-servers is possible without using sqlx
|
||||
/*
|
||||
@@ -62,8 +63,9 @@ func newLocalDB(logger *slog.Logger, path string) (*LocalDB, error) {
|
||||
readDB.SetMaxOpenConns(max(4, runtime.NumCPU()))
|
||||
*/
|
||||
|
||||
//db, err := sql.Open("libsql", "file:"+path)
|
||||
db, err := sqlx.Open("sqlite", "file:"+path)
|
||||
normalizedDSN := normalizeSqliteDSN(dsn)
|
||||
//db, err := sql.Open("libsql", normalizedDSN)
|
||||
db, err := sqlx.Open("sqlite", normalizedDSN)
|
||||
if err != nil {
|
||||
logger.Error("can't open database connection", "error", err)
|
||||
return nil, err
|
||||
@@ -92,3 +94,15 @@ func newLocalDB(logger *slog.Logger, path string) (*LocalDB, error) {
|
||||
|
||||
return &LocalDB{logger: logger, db: db, queries: queries.New(db)}, nil
|
||||
}
|
||||
|
||||
func normalizeSqliteDSN(dsn string) string {
|
||||
trimmed := strings.TrimSpace(dsn)
|
||||
if trimmed == "" {
|
||||
return "file:db.sqlite3"
|
||||
}
|
||||
lower := strings.ToLower(trimmed)
|
||||
if strings.HasPrefix(lower, "file:") || strings.HasPrefix(lower, "file::memory:") || trimmed == ":memory:" {
|
||||
return trimmed
|
||||
}
|
||||
return "file:" + trimmed
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user