Packages
cake
2.1.2
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
Current section
Files
Jump to
Current section
Files
src/cake@fragment.erl
-module(cake@fragment).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-define(FILEPATH, "src/cake/fragment.gleam").
-export([literal/1, bool/1, true/0, false/0, float/1, int/1, string/1, null/0, prepared/2]).
-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", 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", 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", 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.
-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 missmatch 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 there were "/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 there were 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 there were "/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.