Selecto.Builder.Sql.Select (Selecto v0.4.5)

Copy Markdown

SELECT-expression compiler for Selecto query AST values.

This module normalizes selector terms (fields, literals, functions, CASE, subqueries, JSON/array helpers, and custom SQL fragments) into iodata SQL fragments alongside required joins and bind parameters.

Summary

Functions

build(selecto, field)

build(selecto, field, pivot_aliases)

build(selecto, field, as, pivot_aliases)

build_udf(selecto, function_id, args, call_site, pivot_aliases \\ %{})

prep_selector(selecto, val)

Process field selectors with various formats:

Custom SQL support: {:custom_sql, sql_template, field_mappings} - safely handle custom column SQL with field validation

Standard formats:

"field" # - plain old field from one of the tables {:field, field } #- same as above disamg for predicate second+ position {:literal, "value"} #- for literal values

{:literal, 1.0}

etc

(for count(*))

#...

{:case, [PREDICATE, SELECTOR, ..., :else, SELECTOR]}

{:greatest, [SELECTOR, SELECTOR, ...]}

#LITERAL_SELECTOR means naked value treated as lit not field

prep_selector(selecto, val, pivot_aliases)