4c52b41b7b
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>
1.7 KiB
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). |
|
|
false | error_go_core |
|
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 = "".