🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1.8 KiB
1.8 KiB
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
# 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(noArrayList.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, noname)
Git
origin: git@git.reugenio.com:reugenio/zsqlite.git
branch: main