# ADR-019: JSON text for schema columns in SQLite ## Status Accepted ## Context SQLite stores JSON as `text` with `{ mode: "json" }`. PostgreSQL uses native `jsonb`. The choice affects queryability and validation behavior. ## Decision SQLite uses `text` with JSON mode for `schema`, `config`, `attributes`, `metadata`, and `allowedSourceTypes`/`allowedTargetTypes` columns. JSON validation relies on application-level TypeBox schemas, not database constraints. SQLite is for spokes (local, infrequent queries); PostgreSQL is for the hub (frequent, complex queries where `jsonb` queryability matters). ## Consequences - SQLite cannot efficiently query inside JSON columns (no GIN indexes) - All JSON validation is application-level (`Value.Check`) - PostgreSQL gets queryability benefits from `jsonb` when implemented - The dual-host strategy is appropriate: SQLite for local infrequent access, PG for hub-level querying ## References - [sqlite-host.md](../sqlite-host.md)