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