Current section

Files

Jump to
cake src cake@internal@prepared_statement.erl
Raw

src/cake@internal@prepared_statement.erl

-module(cake@internal@prepared_statement).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/1, append_sql/2, append_param/2, append_sql_and_param/3, append_sql_and_params/3, get_prefix/1, get_sql/1, get_params/1, next_placeholder/1]).
-export_type([prepared_statement/0]).
-opaque prepared_statement() :: {prepared_statement,
binary(),
binary(),
list(cake@param:param()),
integer()}.
-spec new(binary()) -> prepared_statement().
new(Prfx) ->
_pipe = Prfx,
{prepared_statement, _pipe, <<""/utf8>>, [], 0}.
-spec append_sql(prepared_statement(), binary()) -> prepared_statement().
append_sql(Prp_stm, Nw_sql) ->
erlang:setelement(
3,
Prp_stm,
<<(erlang:element(3, Prp_stm))/binary, Nw_sql/binary>>
).
-spec append_param(prepared_statement(), cake@param:param()) -> prepared_statement().
append_param(Prp_stm, Nw_prms) ->
erlang:setelement(
5,
erlang:setelement(
4,
Prp_stm,
lists:append(erlang:element(4, Prp_stm), [Nw_prms])
),
erlang:element(5, Prp_stm) + 1
).
-spec append_sql_and_param(prepared_statement(), binary(), cake@param:param()) -> prepared_statement().
append_sql_and_param(Prp_stm, Nw_sql, Nw_prms) ->
erlang:setelement(
5,
erlang:setelement(
4,
erlang:setelement(
3,
Prp_stm,
<<(erlang:element(3, Prp_stm))/binary, Nw_sql/binary>>
),
lists:append(erlang:element(4, Prp_stm), [Nw_prms])
),
erlang:element(5, Prp_stm) + 1
).
-spec append_sql_and_params(
prepared_statement(),
binary(),
list(cake@param:param())
) -> prepared_statement().
append_sql_and_params(Prp_stm, Nw_sql, Nw_prms) ->
erlang:setelement(
5,
erlang:setelement(
4,
erlang:setelement(
3,
Prp_stm,
<<(erlang:element(3, Prp_stm))/binary, Nw_sql/binary>>
),
lists:append(erlang:element(4, Prp_stm), Nw_prms)
),
erlang:element(5, Prp_stm) + erlang:length(Nw_prms)
).
-spec get_prefix(prepared_statement()) -> binary().
get_prefix(Prp_stm) ->
erlang:element(2, Prp_stm).
-spec get_sql(prepared_statement()) -> binary().
get_sql(Prp_stm) ->
erlang:element(3, Prp_stm).
-spec get_params(prepared_statement()) -> list(cake@param:param()).
get_params(Prp_stm) ->
erlang:element(4, Prp_stm).
-spec next_placeholder(prepared_statement()) -> binary().
next_placeholder(Prp_stm) ->
<<(erlang:element(2, Prp_stm))/binary,
(begin
_pipe = erlang:element(5, Prp_stm),
_pipe@1 = gleam@int:add(_pipe, 1),
gleam@int:to_string(_pipe@1)
end)/binary>>.