-record(select_query, { ctes :: list(galchemy@ast@expression:cte()), items :: list(galchemy@ast@expression:select_item()), from :: gleam@option:option(galchemy@ast@expression:source()), joins :: list(galchemy@ast@expression:join()), where_ :: gleam@option:option(galchemy@ast@expression:predicate()), group_by :: list(galchemy@ast@expression:expression()), having_ :: gleam@option:option(galchemy@ast@expression:predicate()), unions :: list(galchemy@ast@expression:set_operation()), order_by :: list(galchemy@ast@expression:order()), limit :: gleam@option:option(integer()), offset :: gleam@option:option(integer()), distinct :: boolean() }).