-module(cake@query@combined). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([to_query/1, union/1, union_all/1, except/1, except_all/1, intersect/1, intersect_all/1, set_limit_and_offset/3, set_limit/2, set_offset/2, get_limit_and_offset/1, order_asc/2, order_asc_nulls_first/2, order_asc_replace/2, order_asc_nulls_first_replace/2, order_desc/2, order_desc_nulls_first/2, order_desc_replace/2, order_desc_nulls_first_replace/2, order/3, order_replace/3]). -export_type([combined_order_by_direction_part/0]). -type combined_order_by_direction_part() :: asc | desc. -spec to_query(cake@internal@query:combined_query()) -> cake@internal@query:'query'(). to_query(Qry) -> _pipe = Qry, {combined, _pipe}. -spec union(list(cake@internal@query:select_query())) -> cake@internal@query:combined_query(). union(Qrys) -> _pipe = union, cake@internal@query:combined_query_new(_pipe, Qrys). -spec union_all(list(cake@internal@query:select_query())) -> cake@internal@query:combined_query(). union_all(Qrys) -> _pipe = union_all, cake@internal@query:combined_query_new(_pipe, Qrys). -spec except(list(cake@internal@query:select_query())) -> cake@internal@query:combined_query(). except(Qrys) -> _pipe = except, cake@internal@query:combined_query_new(_pipe, Qrys). -spec except_all(list(cake@internal@query:select_query())) -> cake@internal@query:combined_query(). except_all(Qrys) -> _pipe = except_all, cake@internal@query:combined_query_new(_pipe, Qrys). -spec intersect(list(cake@internal@query:select_query())) -> cake@internal@query:combined_query(). intersect(Qrys) -> _pipe = intersect, cake@internal@query:combined_query_new(_pipe, Qrys). -spec intersect_all(list(cake@internal@query:select_query())) -> cake@internal@query:combined_query(). intersect_all(Qrys) -> _pipe = intersect_all, cake@internal@query:combined_query_new(_pipe, Qrys). -spec set_limit_and_offset( cake@internal@query:combined_query(), integer(), integer() ) -> cake@internal@query:combined_query(). set_limit_and_offset(Qry, Lmt, Offst) -> Lmt_offst = cake@internal@query:limit_offset_new(Lmt, Offst), erlang:setelement(4, Qry, Lmt_offst). -spec set_limit(cake@internal@query:combined_query(), integer()) -> cake@internal@query:combined_query(). set_limit(Qry, Lmt) -> Lmt_offst = cake@internal@query:limit_new(Lmt), erlang:setelement(4, Qry, Lmt_offst). -spec set_offset(cake@internal@query:combined_query(), integer()) -> cake@internal@query:combined_query(). set_offset(Qry, Lmt) -> Lmt_offst = cake@internal@query:offset_new(Lmt), erlang:setelement(4, Qry, Lmt_offst). -spec get_limit_and_offset(cake@internal@query:combined_query()) -> cake@internal@query:limit_offset_part(). get_limit_and_offset(Qry) -> erlang:element(4, Qry). -spec map_order_by_direction_part_constructor( combined_order_by_direction_part() ) -> cake@internal@query:order_by_direction_part(). map_order_by_direction_part_constructor(In) -> case In of asc -> asc; desc -> desc end. -spec order_asc(cake@internal@query:combined_query(), binary()) -> cake@internal@query:combined_query(). order_asc(Qry, Ordb) -> _pipe = Qry, cake@internal@query:combined_order_by( _pipe, {order_by_column_part, Ordb, asc}, true ). -spec order_asc_nulls_first(cake@internal@query:combined_query(), binary()) -> cake@internal@query:combined_query(). order_asc_nulls_first(Qry, Ordb) -> _pipe = Qry, cake@internal@query:combined_order_by( _pipe, {order_by_column_part, Ordb, asc_nulls_first}, true ). -spec order_asc_replace(cake@internal@query:combined_query(), binary()) -> cake@internal@query:combined_query(). order_asc_replace(Qry, Ordb) -> _pipe = Qry, cake@internal@query:combined_order_by( _pipe, {order_by_column_part, Ordb, asc}, false ). -spec order_asc_nulls_first_replace( cake@internal@query:combined_query(), binary() ) -> cake@internal@query:combined_query(). order_asc_nulls_first_replace(Qry, Ordb) -> _pipe = Qry, cake@internal@query:combined_order_by( _pipe, {order_by_column_part, Ordb, asc_nulls_first}, false ). -spec order_desc(cake@internal@query:combined_query(), binary()) -> cake@internal@query:combined_query(). order_desc(Qry, Ordb) -> _pipe = Qry, cake@internal@query:combined_order_by( _pipe, {order_by_column_part, Ordb, desc}, true ). -spec order_desc_nulls_first(cake@internal@query:combined_query(), binary()) -> cake@internal@query:combined_query(). order_desc_nulls_first(Qry, Ordb) -> _pipe = Qry, cake@internal@query:combined_order_by( _pipe, {order_by_column_part, Ordb, desc_nulls_first}, true ). -spec order_desc_replace(cake@internal@query:combined_query(), binary()) -> cake@internal@query:combined_query(). order_desc_replace(Qry, Ordb) -> _pipe = Qry, cake@internal@query:combined_order_by( _pipe, {order_by_column_part, Ordb, desc}, false ). -spec order_desc_nulls_first_replace( cake@internal@query:combined_query(), binary() ) -> cake@internal@query:combined_query(). order_desc_nulls_first_replace(Qry, Ordb) -> _pipe = Qry, cake@internal@query:combined_order_by( _pipe, {order_by_column_part, Ordb, desc_nulls_first}, false ). -spec order( cake@internal@query:combined_query(), binary(), combined_order_by_direction_part() ) -> cake@internal@query:combined_query(). order(Qry, Ordb, Dir) -> Dir@1 = begin _pipe = Dir, map_order_by_direction_part_constructor(_pipe) end, _pipe@1 = Qry, cake@internal@query:combined_order_by( _pipe@1, {order_by_column_part, Ordb, Dir@1}, true ). -spec order_replace( cake@internal@query:combined_query(), binary(), combined_order_by_direction_part() ) -> cake@internal@query:combined_query(). order_replace(Qry, Ordb, Dir) -> Dir@1 = begin _pipe = Dir, map_order_by_direction_part_constructor(_pipe) end, _pipe@1 = Qry, cake@internal@query:combined_order_by( _pipe@1, {order_by_column_part, Ordb, Dir@1}, false ).