Reusable SQL fragments shared by QuackDB statement builders.
This module intentionally builds small, composable iodata fragments rather than introducing another statement-level DSL. Public DML/DDL helpers can reuse these fragments while keeping the number of top-level insert/update APIs small.
Summary
Functions
Quotes a table alias.
Quotes a column identifier.
Renders a comma-separated column list.
Renders a conflict target such as (id, name), including trailing space.
Renders an optional parenthesized insert column list.
Renders a simple joined table clause.
Renders supported ON CONFLICT clauses.
Renders an optional ORDER BY clause for window expressions.
Renders a parenthesized window partition column list.
Quotes a qualified column reference such as source.id.
Renders a comma-separated qualified column list.
Renders equality between two qualified columns.
Renders IS NOT DISTINCT FROM between two qualified columns.
Renders RETURNING ... for a non-empty column list.
Renders a row_number() OVER (...) AS alias expression.
Renders * for an empty select list, otherwise a column list.
Quotes a table name, optionally with a schema/prefix tuple.
Renders an optional WHERE clause from raw predicate iodata.
Types
@type nulls_order() :: :first | :last
@type order_direction() :: :asc | :desc
@type order_expression() :: column() | {column(), order_direction()} | {column(), order_direction(), keyword()}
Functions
@spec alias_name(alias_name()) :: iodata()
Quotes a table alias.
Quotes a column identifier.
Renders a comma-separated column list.
Renders a conflict target such as (id, name), including trailing space.
Renders an optional parenthesized insert column list.
Renders a simple joined table clause.
Renders supported ON CONFLICT clauses.
@spec order_by([order_expression()]) :: iodata()
Renders an optional ORDER BY clause for window expressions.
Renders a parenthesized window partition column list.
@spec qualified_column(alias_name(), column()) :: iodata()
Quotes a qualified column reference such as source.id.
@spec qualified_column_list([column()], alias_name()) :: iodata()
Renders a comma-separated qualified column list.
@spec qualified_equality(alias_name(), column(), alias_name(), column()) :: iodata()
Renders equality between two qualified columns.
@spec qualified_not_distinct(alias_name(), column(), alias_name(), column()) :: iodata()
Renders IS NOT DISTINCT FROM between two qualified columns.
Renders RETURNING ... for a non-empty column list.
Renders a row_number() OVER (...) AS alias expression.
Renders * for an empty select list, otherwise a column list.
Quotes a table name, optionally with a schema/prefix tuple.
Renders an optional WHERE clause from raw predicate iodata.