Files
fn_registry/functions/infra/sqlite_open.md
T
egutierrez 4c52b41b7b feat: sqlite_open basePath — resuelve paths relativos desde directorio de config
Nuevo parámetro basePath en SQLiteOpen para resolver paths relativos
contra un directorio base (ej: filepath.Dir del archivo YAML de config)
en lugar del cwd del proceso. basePath vacío mantiene comportamiento anterior.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 15:32:40 +02:00

1.7 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path
sqlite_open function go infra 1.1.0 impure func SQLiteOpen(path string, basePath string) (*sql.DB, error) Abre (o crea) una base de datos SQLite con WAL mode y foreign keys habilitados. Hace ping para verificar la conexion. Si basePath es no-vacio y path es relativo, resuelve el path como filepath.Join(basePath, path).
database
sqlite
connection
sql
db_config_go_infra
false error_go_core
database/sql
path/filepath
github.com/mattn/go-sqlite3
false
functions/infra/sqlite_open.go

Ejemplo

// Path absoluto o relativo al cwd
db, err := SQLiteOpen("/data/myapp.db", "")
if err != nil {
    log.Fatal(err)
}
defer DBClose(db)

// Path relativo al directorio del archivo YAML de configuracion
configDir := filepath.Dir(configPath)
db, err := SQLiteOpen(cfg.DatabasePath, configDir)
if err != nil {
    log.Fatal(err)
}

rows, err := DBQuery(db, "SELECT * FROM users WHERE active = ?", 1)

Notas

Usa el driver github.com/mattn/go-sqlite3 (CGO). El DSN incluye _journal_mode=WAL para mejor concurrencia y _foreign_keys=on. Acepta :memory: para base de datos en memoria (basePath se ignora en este caso). Hace ping al abrir para detectar errores temprano.

El parametro basePath resuelve el problema de paths relativos en configs YAML: cuando el binario corre desde un directorio distinto al del archivo de config, el path relativo se interpreta incorrectamente. Pasar filepath.Dir(configPath) como basePath corrige esto.

Para mantener el comportamiento anterior (resolver vs cwd), pasar basePath = "".