Adapters (@signalql/adapters)
@signalql/adapters provides concrete compile/run behavior for v0.1:
postgresAdapter— compiles to parameterized SQL through@signalql/compiler.csvAdapter— evaluates SignalQL AST in-memory against demo events (no database required).clickHouseAdapter— minimal SQL mapping for count/group/funnel.bigQueryAdapter— minimal SQL mapping for count/group/funnel.
Interface
Each adapter exposes:
describe()setup()instructionscompile(query, context?)- optional
run(query, context?)
context.tableMap binds logical sources (events, users, sessions) to physical tables.
Setup and limitations
CSV adapter
- Requires
context.demoEventsrows. - Supports local sample/demo workflows.
- Evaluator supports
FROM eventsfor v0.1 demo execution.
Postgres adapter
- Uses safe source binding and parameterized SQL.
- Pair with CLI or your own
postgresclient execution path.
ClickHouse / BigQuery adapters
- Provide minimal mapped SQL for v0.1 shapes.
- String literals are escaped in generated SQL (single quote
'becomes''). - Adapters are compile-focused and currently return
params: []; they do not emit prepared-statement placeholders. - This is a different safety contract than the Postgres reference compiler: safety here relies on escaping plus identifier checks, not bound-value placeholders.
- Review generated SQL and adapt JSON/time semantics before production rollout.
Smoke coverage
See packages/adapters/test/adapters.test.ts.