Expand description
Query builder module — transforms typed plans into parameterized SQL.
This module sits between the plan layer (crate::plan) and the database
executor. It consumes ActionPlan / CrudPlan values and produces
parameterized SQL strings ready for execution via sqlx.
§Pipeline
ActionPlan ──▶ main_query() ──▶ MainQuery { tx_vars, pre_req, main }
│
├─ tx_var_query() → SET search_path, role, …
├─ pre_req_query() → SELECT pre_request()
└─ main_read/write/call → CTE wrapper query§SQL Example
A simple GET /users produces:
-- tx_vars:
SELECT set_config('search_path', '"test_api"', true),
set_config('role', 'web_anon', true), …
-- main:
WITH dbrst_source AS (
SELECT "test_api"."users"."id", "test_api"."users"."name"
FROM "test_api"."users"
)
SELECT NULL AS total_result_set,
pg_catalog.count(_dbrst_t) AS page_total,
coalesce(json_agg(_dbrst_t), '[]')::text AS body,
…
FROM (SELECT * FROM dbrst_source) AS _dbrst_tRe-exports§
pub use sql_builder::SqlBuilder;pub use sql_builder::SqlParam;
Modules§
- builder
- Plan-to-SQL conversion functions.
- fragment
- SQL fragment formatting functions.
- pre_
query - Transaction and session variable setup queries.
- sql_
builder - Core SQL builder for constructing parameterized queries.
- statements
- Final SQL statement assembly.
Structs§
- Main
Query - A bundle of SQL queries to execute for a single API request.
Functions§
- main_
query - Build all queries for an API request.