add dual sqlite/postgres database backend abstraction
- add backend.zig with unified Backend, Row, Rows types
- add dialect.zig for SQL dialect helpers (placeholder rewriting)
- add pg.zig dependency for PostgreSQL support
- migrate all entity modules to use backend abstraction
- add schema/ directory with dialect-specific DDL
- add test-db-backends script for backend testing
- add hashing.zig for canonical JSON checksum generation
the backend abstraction supports:
- automatic placeholder rewriting (? → $1, $2 for postgres)
- unified row interface across both backends
- connection pooling for postgres, single conn + mutex for sqlite
- environment-based backend selection (PREFECT_DATABASE_BACKEND)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>