Current section

Files

Jump to
cake src cake@query@select.erl
Raw

src/cake@query@select.erl

-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
).