Skip to main content

Module query

Module query 

Source
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_t

Re-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§

MainQuery
A bundle of SQL queries to execute for a single API request.

Functions§

main_query
Build all queries for an API request.