🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
69 lines
1.8 KiB
Markdown
69 lines
1.8 KiB
Markdown
# zsqlite
|
|
|
|
> SQLite wrapper idiomático para Zig 0.15.2+
|
|
|
|
## Estado
|
|
|
|
**v1.0 - Completo** | 7,563 líneas | 15 módulos | 63 tests
|
|
|
|
## Arquitectura
|
|
|
|
```
|
|
src/
|
|
├── root.zig # Exports públicos y tests
|
|
├── database.zig # Conexión, transacciones, pragmas, snapshots
|
|
├── statement.zig # Prepared statements, binding, row mapping
|
|
├── session.zig # Change tracking (Session extension)
|
|
├── serialize.zig # Serialize/Deserialize API
|
|
├── functions.zig # UDFs, callbacks, hooks
|
|
├── backup.zig # Backup API, Blob I/O
|
|
├── pool.zig # Connection pool
|
|
├── fts5.zig # Full-text search
|
|
├── json.zig # JSON1 helpers
|
|
├── rtree.zig # R-Tree spatial index
|
|
├── vtable.zig # Virtual tables API
|
|
├── types.zig # Tipos comunes
|
|
├── errors.zig # Mapeo de errores
|
|
└── c.zig # C bindings
|
|
```
|
|
|
|
## Comandos
|
|
|
|
```bash
|
|
# Build
|
|
zig build
|
|
|
|
# Tests
|
|
zig build test
|
|
|
|
# Ejemplo
|
|
zig build basic && ./zig-out/bin/basic
|
|
```
|
|
|
|
## SQLite Flags
|
|
|
|
```
|
|
-DSQLITE_THREADSAFE=0 # Single-threaded
|
|
-DSQLITE_ENABLE_FTS5 # Full-text search
|
|
-DSQLITE_ENABLE_JSON1 # JSON functions
|
|
-DSQLITE_ENABLE_RTREE # R-Tree
|
|
-DSQLITE_ENABLE_SESSION # Change tracking
|
|
-DSQLITE_ENABLE_SNAPSHOT # Snapshots
|
|
-DSQLITE_ENABLE_COLUMN_METADATA
|
|
-DSQLITE_ENABLE_PREUPDATE_HOOK
|
|
```
|
|
|
|
## Notas Técnicas
|
|
|
|
- Zig 0.15: usar `std.ArrayListUnmanaged` (no `ArrayList.init`)
|
|
- Strings: `std.fmt.allocPrint` + null terminator manual
|
|
- Callbacks C: requieren `callconv(.c)`
|
|
- SQLITE_TRANSIENT: necesario para strings que Zig puede mover
|
|
- Named params: incluir prefijo (`:name`, no `name`)
|
|
|
|
## Git
|
|
|
|
```
|
|
origin: git@git.reugenio.com:reugenio/zsqlite.git
|
|
branch: main
|
|
```
|