zcatsql/CLAUDE.md
reugenio 427628116b docs: optimize CLAUDE.md - reduce from 322 to 69 lines
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 21:06:33 +01:00

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 (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