Current section

Files

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

src/cake@query@combined.erl

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