Processes [[...]] optional clause syntax in SQL queries.
Clauses wrapped in double brackets are stripped entirely when the enclosed variables have no value, making them optional. When all variables inside a block have values, the brackets are removed and the content is kept.
Example
SELECT * FROM users
WHERE 1=1
[[AND "name" ILIKE '%' || {{name}} || '%']]
[[AND "status" = {{status}}]]If name has no value, the first [[...]] block is removed entirely.
If status has a value, the second block becomes AND "status" = {{status}}.
Summary
Functions
Returns a MapSet of variable names that appear inside [[...]] blocks.
Processes optional clauses in SQL. Removes [[...]] blocks where any
enclosed variable has no value. Keeps content (without brackets) when
all variables have values.
Strips [[ and ]] brackets from the string, keeping the inner content.
Functions
Returns a MapSet of variable names that appear inside [[...]] blocks.
Processes optional clauses in SQL. Removes [[...]] blocks where any
enclosed variable has no value. Keeps content (without brackets) when
all variables have values.
A variable is considered to have "no value" when it is missing from
supplied_vars, is nil, or is "".
Strips [[ and ]] brackets from the string, keeping the inner content.
Unlike process/2, this does not evaluate variables — it unconditionally
removes all bracket pairs. Useful for preparing SQL for validation where
all optional clauses should be included.
Examples
iex> Lotus.SQL.OptionalClause.strip_brackets("WHERE 1=1 [[AND status = 'active']]")
"WHERE 1=1 AND status = 'active'"