-module(cake@query@select). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([to_query/1, col/1, bool/1, float/1, int/1, string/1, fragment/1, alias/2, new/2, new_from/1, new_select/1, set_from/2, get_from/1, select/2, select_replace/2, get_select/1, where/2, or_where/2, where_replace/2, get_where/1, join/2, join_replace/2, joins/2, joins_replace/2, get_joins/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([select_order_by_direction_part/0]). -type select_order_by_direction_part() :: asc | desc. -spec to_query(cake@internal@query:select_query()) -> cake@internal@query:'query'(). to_query(Qry) -> _pipe = Qry, {select, _pipe}. -spec col(binary()) -> cake@internal@query:select_value(). col(Name) -> _pipe = Name, {select_column, _pipe}. -spec bool(boolean()) -> cake@internal@query:select_value(). bool(Value) -> _pipe = Value, _pipe@1 = cake@param:bool(_pipe), {select_param, _pipe@1}. -spec float(float()) -> cake@internal@query:select_value(). float(Value) -> _pipe = Value, _pipe@1 = cake@param:float(_pipe), {select_param, _pipe@1}. -spec int(integer()) -> cake@internal@query:select_value(). int(Value) -> _pipe = Value, _pipe@1 = cake@param:int(_pipe), {select_param, _pipe@1}. -spec string(binary()) -> cake@internal@query:select_value(). string(Value) -> _pipe = Value, _pipe@1 = cake@param:string(_pipe), {select_param, _pipe@1}. -spec fragment(cake@internal@query:fragment()) -> cake@internal@query:select_value(). fragment(Frgmt) -> _pipe = Frgmt, {select_fragment, _pipe}. -spec alias(cake@internal@query:select_value(), binary()) -> cake@internal@query:select_value(). alias(V, Als) -> _pipe = V, {select_alias, _pipe, Als}. -spec new( cake@internal@query:from_part(), list(cake@internal@query:select_value()) ) -> cake@internal@query:select_query(). new(Frm, Slct) -> {select_query, Frm, Slct, [], no_where_part, no_limit_no_offset, [], no_epilog_part}. -spec new_from(cake@internal@query:from_part()) -> cake@internal@query:select_query(). new_from(Frm) -> {select_query, Frm, [], [], no_where_part, no_limit_no_offset, [], no_epilog_part}. -spec new_select(list(cake@internal@query:select_value())) -> cake@internal@query:select_query(). new_select(Slct) -> {select_query, no_from_part, Slct, [], no_where_part, no_limit_no_offset, [], no_epilog_part}. -spec set_from( cake@internal@query:select_query(), cake@internal@query:from_part() ) -> cake@internal@query:select_query(). set_from(Qry, Frm) -> erlang:setelement(2, Qry, Frm). -spec get_from(cake@internal@query:select_query()) -> cake@internal@query:from_part(). get_from(Qry) -> erlang:element(2, Qry). -spec select( cake@internal@query:select_query(), list(cake@internal@query:select_value()) ) -> cake@internal@query:select_query(). select(Qry, Prts) -> erlang:setelement(3, Qry, lists:append(erlang:element(3, Qry), Prts)). -spec select_replace( cake@internal@query:select_query(), list(cake@internal@query:select_value()) ) -> cake@internal@query:select_query(). select_replace(Qry, Prts) -> erlang:setelement(3, Qry, Prts). -spec get_select(cake@internal@query:select_query()) -> list(cake@internal@query:select_value()). get_select(Qry) -> erlang:element(3, Qry). -spec where( cake@internal@query:select_query(), cake@internal@query:where_part() ) -> cake@internal@query:select_query(). where(Qry, Whr) -> erlang:setelement(5, Qry, Whr). -spec or_where( cake@internal@query:select_query(), cake@internal@query:where_part() ) -> cake@internal@query:select_query(). or_where(Qry, Whr) -> New_where = {or_where, [erlang:element(5, Qry), Whr]}, erlang:setelement(5, Qry, New_where). -spec where_replace( cake@internal@query:select_query(), cake@internal@query:where_part() ) -> cake@internal@query:select_query(). where_replace(Qry, Whr) -> erlang:setelement(5, Qry, Whr). -spec get_where(cake@internal@query:select_query()) -> cake@internal@query:where_part(). get_where(Qry) -> erlang:element(5, Qry). -spec join(cake@internal@query:select_query(), cake@internal@query:join_part()) -> cake@internal@query:select_query(). join(Qry, Prt) -> erlang:setelement(4, Qry, lists:append(erlang:element(4, Qry), [Prt])). -spec join_replace( cake@internal@query:select_query(), cake@internal@query:join_part() ) -> cake@internal@query:select_query(). join_replace(Qry, Prt) -> erlang:setelement(4, Qry, [Prt]). -spec joins( cake@internal@query:select_query(), list(cake@internal@query:join_part()) ) -> cake@internal@query:select_query(). joins(Qry, Prts) -> erlang:setelement(4, Qry, lists:append(erlang:element(4, Qry), Prts)). -spec joins_replace( cake@internal@query:select_query(), list(cake@internal@query:join_part()) ) -> cake@internal@query:select_query(). joins_replace(Qry, Prts) -> erlang:setelement(4, Qry, Prts). -spec get_joins(cake@internal@query:select_query()) -> list(cake@internal@query:join_part()). get_joins(Qry) -> erlang:element(4, Qry). -spec set_limit_and_offset( cake@internal@query:select_query(), integer(), integer() ) -> cake@internal@query:select_query(). set_limit_and_offset(Qry, Lmt, Offst) -> Lmt_offst = cake@internal@query:limit_offset_new(Lmt, Offst), erlang:setelement(6, Qry, Lmt_offst). -spec set_limit(cake@internal@query:select_query(), integer()) -> cake@internal@query:select_query(). set_limit(Qry, Lmt) -> Lmt_offst = cake@internal@query:limit_new(Lmt), erlang:setelement(6, Qry, Lmt_offst). -spec set_offset(cake@internal@query:select_query(), integer()) -> cake@internal@query:select_query(). set_offset(Qry, Lmt) -> Lmt_offst = cake@internal@query:offset_new(Lmt), erlang:setelement(6, Qry, Lmt_offst). -spec get_limit_and_offset(cake@internal@query:select_query()) -> cake@internal@query:limit_offset_part(). get_limit_and_offset(Qry) -> erlang:element(6, Qry). -spec map_order_by_direction_part_constructor(select_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:select_query(), binary()) -> cake@internal@query:select_query(). order_asc(Qry, Ordb) -> _pipe = Qry, cake@internal@query:select_order_by( _pipe, {order_by_column_part, Ordb, asc}, true ). -spec order_asc_nulls_first(cake@internal@query:select_query(), binary()) -> cake@internal@query:select_query(). order_asc_nulls_first(Qry, Ordb) -> _pipe = Qry, cake@internal@query:select_order_by( _pipe, {order_by_column_part, Ordb, asc_nulls_first}, true ). -spec order_asc_replace(cake@internal@query:select_query(), binary()) -> cake@internal@query:select_query(). order_asc_replace(Qry, Ordb) -> _pipe = Qry, cake@internal@query:select_order_by( _pipe, {order_by_column_part, Ordb, asc}, false ). -spec order_asc_nulls_first_replace( cake@internal@query:select_query(), binary() ) -> cake@internal@query:select_query(). order_asc_nulls_first_replace(Qry, Ordb) -> _pipe = Qry, cake@internal@query:select_order_by( _pipe, {order_by_column_part, Ordb, asc_nulls_first}, false ). -spec order_desc(cake@internal@query:select_query(), binary()) -> cake@internal@query:select_query(). order_desc(Qry, Ordb) -> _pipe = Qry, cake@internal@query:select_order_by( _pipe, {order_by_column_part, Ordb, desc}, true ). -spec order_desc_nulls_first(cake@internal@query:select_query(), binary()) -> cake@internal@query:select_query(). order_desc_nulls_first(Qry, Ordb) -> _pipe = Qry, cake@internal@query:select_order_by( _pipe, {order_by_column_part, Ordb, desc_nulls_first}, true ). -spec order_desc_replace(cake@internal@query:select_query(), binary()) -> cake@internal@query:select_query(). order_desc_replace(Qry, Ordb) -> _pipe = Qry, cake@internal@query:select_order_by( _pipe, {order_by_column_part, Ordb, desc}, false ). -spec order_desc_nulls_first_replace( cake@internal@query:select_query(), binary() ) -> cake@internal@query:select_query(). order_desc_nulls_first_replace(Qry, Ordb) -> _pipe = Qry, cake@internal@query:select_order_by( _pipe, {order_by_column_part, Ordb, desc_nulls_first}, false ). -spec order( cake@internal@query:select_query(), binary(), select_order_by_direction_part() ) -> cake@internal@query:select_query(). order(Qry, Ordb, Dir) -> Dir@1 = begin _pipe = Dir, map_order_by_direction_part_constructor(_pipe) end, _pipe@1 = Qry, cake@internal@query:select_order_by( _pipe@1, {order_by_column_part, Ordb, Dir@1}, true ). -spec order_replace( cake@internal@query:select_query(), binary(), select_order_by_direction_part() ) -> cake@internal@query:select_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:select_order_by( _pipe@1, {order_by_column_part, Ordb, Dir@1}, false ).