Packages
cake
0.10.1
4.1.0
4.0.0
3.0.0
2.2.2
2.2.1
2.2.0
2.1.3
2.1.2
2.1.1
2.1.0
2.0.2
2.0.1
2.0.0
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-rc.0
retired
0.15.0
retired
0.14.0
retired
0.13.0
retired
0.12.0
retired
0.11.0
retired
0.10.1
retired
0.10.0
retired
0.9.2
retired
0.9.1
retired
0.9.0
retired
0.8.0
retired
0.7.0
retired
0.6.0
retired
0.5.0
retired
0.4.0
retired
0.3.0
retired
0.2.0
retired
0.1.0
retired
0.0.1
retired
🎂 An SQL query builder for Gleam for SQL dialects 🐘PostgreSQL, 🪶SQLite, 🦭MariaDB, and 🐬MySQL
Retired package: Deprecated - a stable release is available, please use >= 1.0.0
Current section
Files
Jump to
Current section
Files
src/cake@update.erl
-module(cake@update).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([to_query/1, bool/1, float/1, int/1, string/1, new/0, table/2, get_table/1, set_to_param/2, set_to_expression/2, set_to_sub_query/2, set/2, set_replace/2, sets/2, sets_replace/2, set_many_to_expression/2, set_many_to_sub_query/2, get_set/1, from_table/2, from_sub_query/3, no_from/1, get_from/1, join/2, replace_join/2, joins/2, replace_joins/2, no_join/1, get_joins/1, where/2, or_where/2, xor_where/2, replace_where/2, no_where/1, get_where/1, returning/2, no_returning/1, epilog/2, no_epilog/1, get_epilog/1, comment/2, no_comment/1, get_comment/1]).
-spec to_query(cake@internal@write_query:update(RJZ)) -> cake@internal@write_query:write_query(RJZ).
to_query(Updt) ->
_pipe = Updt,
{update_query, _pipe}.
-spec bool(boolean()) -> cake@internal@param:param().
bool(Vl) ->
_pipe = Vl,
cake@internal@param:bool(_pipe).
-spec float(float()) -> cake@internal@param:param().
float(Vl) ->
_pipe = Vl,
cake@internal@param:float(_pipe).
-spec int(integer()) -> cake@internal@param:param().
int(Vl) ->
_pipe = Vl,
cake@internal@param:int(_pipe).
-spec string(binary()) -> cake@internal@param:param().
string(Vl) ->
_pipe = Vl,
cake@internal@param:string(_pipe).
-spec new() -> cake@internal@write_query:update(any()).
new() ->
{update,
no_update_table,
no_update_modifier,
no_update_sets,
no_from,
no_joins,
no_where,
no_returning,
no_epilog,
no_comment}.
-spec table(cake@internal@write_query:update(RKE), binary()) -> cake@internal@write_query:update(RKE).
table(Qry, Tbl_nm) ->
erlang:setelement(2, Qry, {update_table, Tbl_nm}).
-spec get_table(cake@internal@write_query:update(any())) -> cake@internal@write_query:update_table().
get_table(Qry) ->
erlang:element(2, Qry).
-spec set_to_param(binary(), cake@internal@param:param()) -> cake@internal@write_query:update_set().
set_to_param(Col, Prm) ->
{update_param_set, Col, Prm}.
-spec set_to_expression(binary(), binary()) -> cake@internal@write_query:update_set().
set_to_expression(Col, Exp) ->
{update_expression_set, [Col], Exp}.
-spec set_to_sub_query(binary(), cake@internal@query:'query'()) -> cake@internal@write_query:update_set().
set_to_sub_query(Col, Qry) ->
{update_sub_query_set, [Col], Qry}.
-spec set(
cake@internal@write_query:update(RKJ),
cake@internal@write_query:update_set()
) -> cake@internal@write_query:update(RKJ).
set(Qry, St) ->
case erlang:element(4, Qry) of
no_update_sets ->
erlang:setelement(4, Qry, {update_sets, [St]});
{update_sets, Sets} ->
erlang:setelement(
4,
Qry,
{update_sets,
begin
_pipe = Sets,
lists:append(_pipe, [St])
end}
)
end.
-spec set_replace(
cake@internal@write_query:update(RKM),
cake@internal@write_query:update_set()
) -> cake@internal@write_query:update(RKM).
set_replace(Qry, St) ->
erlang:setelement(4, Qry, {update_sets, [St]}).
-spec sets(
cake@internal@write_query:update(RKP),
list(cake@internal@write_query:update_set())
) -> cake@internal@write_query:update(RKP).
sets(Qry, Sts) ->
case erlang:element(4, Qry) of
no_update_sets ->
erlang:setelement(4, Qry, {update_sets, Sts});
{update_sets, Sets} ->
erlang:setelement(
4,
Qry,
{update_sets,
begin
_pipe = Sets,
lists:append(_pipe, Sts)
end}
)
end.
-spec sets_replace(
cake@internal@write_query:update(RKT),
list(cake@internal@write_query:update_set())
) -> cake@internal@write_query:update(RKT).
sets_replace(Qry, Sts) ->
erlang:setelement(4, Qry, {update_sets, Sts}).
-spec set_many_to_expression(list(binary()), binary()) -> cake@internal@write_query:update_set().
set_many_to_expression(Cols, Exp) ->
{update_expression_set, Cols, Exp}.
-spec set_many_to_sub_query(list(binary()), cake@internal@query:'query'()) -> cake@internal@write_query:update_set().
set_many_to_sub_query(Cols, Qry) ->
{update_sub_query_set, Cols, Qry}.
-spec get_set(cake@internal@write_query:update(any())) -> list(cake@internal@write_query:update_set()).
get_set(Qry) ->
case erlang:element(4, Qry) of
no_update_sets ->
[];
{update_sets, Sets} ->
Sets
end.
-spec from_table(cake@internal@write_query:update(RLC), binary()) -> cake@internal@write_query:update(RLC).
from_table(Qry, Tbl_nm) ->
erlang:setelement(5, Qry, {from_table, Tbl_nm}).
-spec from_sub_query(
cake@internal@write_query:update(RLF),
cake@internal@query:'query'(),
binary()
) -> cake@internal@write_query:update(RLF).
from_sub_query(Qry, Sb_qry, Als) ->
erlang:setelement(5, Qry, {from_sub_query, Sb_qry, Als}).
-spec no_from(cake@internal@write_query:update(RLI)) -> cake@internal@write_query:update(RLI).
no_from(Qry) ->
erlang:setelement(5, Qry, no_from).
-spec get_from(cake@internal@write_query:update(any())) -> cake@internal@query:from().
get_from(Qry) ->
erlang:element(5, Qry).
-spec join(cake@internal@write_query:update(RLN), cake@internal@query:join()) -> cake@internal@write_query:update(RLN).
join(Qry, Jn) ->
case erlang:element(6, Qry) of
{joins, Jns} ->
erlang:setelement(
6,
Qry,
begin
_pipe = Jns,
_pipe@1 = lists:append(_pipe, [Jn]),
{joins, _pipe@1}
end
);
no_joins ->
erlang:setelement(
6,
Qry,
begin
_pipe@2 = [Jn],
{joins, _pipe@2}
end
)
end.
-spec replace_join(
cake@internal@write_query:update(RLQ),
cake@internal@query:join()
) -> cake@internal@write_query:update(RLQ).
replace_join(Qry, Jn) ->
erlang:setelement(
6,
Qry,
begin
_pipe = [Jn],
{joins, _pipe}
end
).
-spec joins(
cake@internal@write_query:update(RLT),
list(cake@internal@query:join())
) -> cake@internal@write_query:update(RLT).
joins(Qry, Jns) ->
case {Jns, erlang:element(6, Qry)} of
{[], _} ->
erlang:setelement(6, Qry, {joins, Jns});
{Jns@1, {joins, Qry_joins}} ->
erlang:setelement(
6,
Qry,
begin
_pipe = Qry_joins,
_pipe@1 = lists:append(_pipe, Jns@1),
{joins, _pipe@1}
end
);
{Jns@2, no_joins} ->
erlang:setelement(
6,
Qry,
begin
_pipe@2 = Jns@2,
{joins, _pipe@2}
end
)
end.
-spec replace_joins(
cake@internal@write_query:update(RLX),
list(cake@internal@query:join())
) -> cake@internal@write_query:update(RLX).
replace_joins(Qry, Jns) ->
erlang:setelement(
6,
Qry,
begin
_pipe = Jns,
{joins, _pipe}
end
).
-spec no_join(cake@internal@write_query:update(RMB)) -> cake@internal@write_query:update(RMB).
no_join(Qry) ->
erlang:setelement(6, Qry, no_joins).
-spec get_joins(cake@internal@write_query:update(any())) -> cake@internal@query:joins().
get_joins(Qry) ->
erlang:element(6, Qry).
-spec where(cake@internal@write_query:update(RMG), cake@internal@query:where()) -> cake@internal@write_query:update(RMG).
where(Qry, Whr) ->
case erlang:element(7, Qry) of
no_where ->
erlang:setelement(7, Qry, Whr);
{and_where, Wheres} ->
erlang:setelement(
7,
Qry,
{and_where,
begin
_pipe = Wheres,
lists:append(_pipe, [Whr])
end}
);
_ ->
erlang:setelement(
7,
Qry,
{and_where, [erlang:element(7, Qry), Whr]}
)
end.
-spec or_where(
cake@internal@write_query:update(RMJ),
cake@internal@query:where()
) -> cake@internal@write_query:update(RMJ).
or_where(Qry, Whr) ->
case erlang:element(7, Qry) of
no_where ->
erlang:setelement(7, Qry, Whr);
{or_where, Wheres} ->
erlang:setelement(
7,
Qry,
{or_where,
begin
_pipe = Wheres,
lists:append(_pipe, [Whr])
end}
);
_ ->
erlang:setelement(7, Qry, {or_where, [erlang:element(7, Qry), Whr]})
end.
-spec xor_where(
cake@internal@write_query:update(RMM),
cake@internal@query:where()
) -> cake@internal@write_query:update(RMM).
xor_where(Qry, Whr) ->
case erlang:element(7, Qry) of
no_where ->
erlang:setelement(7, Qry, Whr);
{xor_where, Wheres} ->
erlang:setelement(
7,
Qry,
{xor_where,
begin
_pipe = Wheres,
lists:append(_pipe, [Whr])
end}
);
_ ->
erlang:setelement(
7,
Qry,
{xor_where, [erlang:element(7, Qry), Whr]}
)
end.
-spec replace_where(
cake@internal@write_query:update(RMP),
cake@internal@query:where()
) -> cake@internal@write_query:update(RMP).
replace_where(Qry, Whr) ->
erlang:setelement(7, Qry, Whr).
-spec no_where(cake@internal@write_query:update(RMS)) -> cake@internal@write_query:update(RMS).
no_where(Qry) ->
erlang:setelement(7, Qry, no_where).
-spec get_where(cake@internal@write_query:update(any())) -> cake@internal@query:where().
get_where(Qry) ->
erlang:element(7, Qry).
-spec returning(cake@internal@write_query:update(RMX), list(binary())) -> cake@internal@write_query:update(RMX).
returning(Qry, Rtrn) ->
case Rtrn of
[] ->
erlang:setelement(8, Qry, no_returning);
_ ->
erlang:setelement(8, Qry, {returning, Rtrn})
end.
-spec no_returning(cake@internal@write_query:update(RNB)) -> cake@internal@write_query:update(RNB).
no_returning(Qry) ->
erlang:setelement(8, Qry, no_returning).
-spec epilog(cake@internal@write_query:update(RNE), binary()) -> cake@internal@write_query:update(RNE).
epilog(Qry, Eplg) ->
Eplg@1 = begin
_pipe = Eplg,
gleam@string:trim(_pipe)
end,
case Eplg@1 of
<<""/utf8>> ->
erlang:setelement(9, Qry, no_epilog);
_ ->
erlang:setelement(
9,
Qry,
begin
_pipe@1 = (<<" "/utf8, Eplg@1/binary>>),
{epilog, _pipe@1}
end
)
end.
-spec no_epilog(cake@internal@write_query:update(RNH)) -> cake@internal@write_query:update(RNH).
no_epilog(Qry) ->
erlang:setelement(9, Qry, no_epilog).
-spec get_epilog(cake@internal@write_query:update(any())) -> cake@internal@query:epilog().
get_epilog(Qry) ->
erlang:element(9, Qry).
-spec comment(cake@internal@write_query:update(RNM), binary()) -> cake@internal@write_query:update(RNM).
comment(Qry, Cmmnt) ->
Cmmnt@1 = begin
_pipe = Cmmnt,
gleam@string:trim(_pipe)
end,
case Cmmnt@1 of
<<""/utf8>> ->
erlang:setelement(10, Qry, no_comment);
_ ->
erlang:setelement(
10,
Qry,
begin
_pipe@1 = (<<" "/utf8, Cmmnt@1/binary>>),
{comment, _pipe@1}
end
)
end.
-spec no_comment(cake@internal@write_query:update(RNP)) -> cake@internal@write_query:update(RNP).
no_comment(Qry) ->
erlang:setelement(10, Qry, no_comment).
-spec get_comment(cake@internal@write_query:update(any())) -> cake@internal@query:comment().
get_comment(Qry) ->
erlang:element(10, Qry).