Current section

Files

Jump to
cake src cake@fragment.erl
Raw

src/cake@fragment.erl

-module(cake@fragment).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/cake/fragment.gleam").
-export([int/1, prepared/2, literal/1, bool/1, true/0, false/0, float/1, string/1, null/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" Fragments are low level building blocks of queries which allow direct\n"
" manipulation of the query string.\n"
"\n"
" If you want to insert parameters, you are required to use prepared\n"
" fragments, which will be validated against the number of parameters given\n"
" and the parameters are automatically escaped by the RDBMS to prevent SQL\n"
" injections.\n"
"\n"
).
-file("src/cake/fragment.gleam", 142).
?DOC(" Create a new `Param` with an `Int` value.\n").
-spec int(integer()) -> cake@param:param().
int(Vl) ->
_pipe = Vl,
{int_param, _pipe}.
-file("src/cake/fragment.gleam", 50).
?DOC(
" Create a new fragment from a string and a list of parameters.\n"
"\n"
" ⛔ ⛔ ⛔\n"
"\n"
" If you mismatch the number of placeholders with the number of\n"
" parameters, an error will be printed to stderr and the fragment will be\n"
" created with the given parameters:\n"
"\n"
" - If there are too many placeholders, the fragment will be created with the\n"
" given parameters and the last parameter will be repeated for the remaining\n"
" placeholders.\n"
" - If there are too many parameters, the fragment will be created with the\n"
" given parameters and the excess parameters will be ignored.\n"
"\n"
" ⛔ ⛔ ⛔\n"
).
-spec prepared(binary(), list(cake@param:param())) -> cake@internal@read_query:fragment().
prepared(Str, Prms) ->
Plchldr_count = begin
_pipe = Str,
_pipe@1 = cake@internal@read_query:fragment_prepared_split_string(_pipe),
cake@internal@read_query:fragment_count_placeholders(_pipe@1)
end,
Param_count = begin
_pipe@2 = Prms,
erlang:length(_pipe@2)
end,
case {Plchldr_count,
Param_count,
begin
_pipe@3 = Plchldr_count,
gleam@int:compare(_pipe@3, Param_count)
end} of
{0, 0, eq} ->
_pipe@4 = Str,
{fragment_literal, _pipe@4};
{_, _, eq} ->
_pipe@5 = Str,
{fragment_prepared, _pipe@5, Prms};
{0, _, _} ->
gleam_stdlib:println_error(
<<<<<<<<"Fragment had 0 "/utf8, (<<"$"/utf8>>)/binary>>/binary,
"-placeholders, but "/utf8>>/binary,
(begin
_pipe@6 = Param_count,
erlang:integer_to_binary(_pipe@6)
end)/binary>>/binary,
" params given!"/utf8>>
),
_pipe@7 = Str,
{fragment_literal, _pipe@7};
{_, 0, _} ->
gleam_stdlib:println_error(
<<<<<<<<"Fragment had "/utf8,
(begin
_pipe@8 = Plchldr_count,
erlang:integer_to_binary(_pipe@8)
end)/binary>>/binary,
" "/utf8>>/binary,
(<<"$"/utf8>>)/binary>>/binary,
"-placeholders, but 0 params given!"/utf8>>
),
_pipe@9 = Str,
{fragment_literal, _pipe@9};
{_, _, _} ->
gleam_stdlib:println_error(
<<<<<<<<<<<<"Fragment had "/utf8,
(begin
_pipe@10 = Plchldr_count,
erlang:integer_to_binary(_pipe@10)
end)/binary>>/binary,
" "/utf8>>/binary,
(<<"$"/utf8>>)/binary>>/binary,
"-placeholders, but "/utf8>>/binary,
(begin
_pipe@11 = Param_count,
erlang:integer_to_binary(_pipe@11)
end)/binary>>/binary,
" params given!"/utf8>>
),
_pipe@12 = Str,
{fragment_prepared, _pipe@12, Prms}
end.
-file("src/cake/fragment.gleam", 108).
?DOC(
" Create a new fragment from a literal string.\n"
"\n"
" ⛔ ⛔ ⛔\n"
"\n"
" WARNING: YOU ARE FORBIDDEN TO INSERT UNCONTROLLED USER INPUT THIS WAY!\n"
"\n"
" ⛔ ⛔ ⛔\n"
).
-spec literal(binary()) -> cake@internal@read_query:fragment().
literal(Str) ->
_pipe = Str,
{fragment_literal, _pipe}.
-file("src/cake/fragment.gleam", 118).
?DOC(" Create a new `Param` with a `Bool` value.\n").
-spec bool(boolean()) -> cake@param:param().
bool(Vl) ->
_pipe = Vl,
{bool_param, _pipe}.
-file("src/cake/fragment.gleam", 124).
?DOC(" Create a new `Param` with a `True` value.\n").
-spec true() -> cake@param:param().
true() ->
_pipe = true,
{bool_param, _pipe}.
-file("src/cake/fragment.gleam", 130).
?DOC(" Create a new `Param` with a `True` value.\n").
-spec false() -> cake@param:param().
false() ->
_pipe = false,
{bool_param, _pipe}.
-file("src/cake/fragment.gleam", 136).
?DOC(" Create a new `Param` with a `Float` value.\n").
-spec float(float()) -> cake@param:param().
float(Vl) ->
_pipe = Vl,
{float_param, _pipe}.
-file("src/cake/fragment.gleam", 148).
?DOC(" Create a new `Param` with a `String` value.\n").
-spec string(binary()) -> cake@param:param().
string(Vl) ->
_pipe = Vl,
{string_param, _pipe}.
-file("src/cake/fragment.gleam", 154).
?DOC(" Create a new `Param` with an SQL `NULL` value.\n").
-spec null() -> cake@param:param().
null() ->
null_param.