local.go
package engines
import (
"database/sql"
"log"
"github.com/readysite/readysite/pkg/database"
_ "github.com/tursodatabase/go-libsql"
)
// NewLocal creates a new local file database engine
//
// Example:
//
// engine := engines.NewLocal("./data/app.db")
// db, err := engine.Open(
func NewLocal(path string) *database.Database {
// Use file: prefix for local file databases
// WAL mode and busy timeout are set for better concurrency
dsn := "file:" + path + "?_journal_mode=WAL&_busy_timeout=5000"
db, err := sql.Open("libsql", dsn)
if err != nil {
log.Fatal("Failed to open database:", err)
}
// libSQL/SQLite handles concurrency internally
db.SetMaxOpenConns(1)
return &database.Database{DB: db}
}