-module(cake@internal@prepared_statement). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/cake/internal/prepared_statement.gleam"). -export([new/2, append_param/2, append_sql/2, get_prefix/1, get_sql/1, get_params/1, get_dialect/1]). -export_type([prepared_statement/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(false). -opaque prepared_statement() :: {prepared_statement, binary(), binary(), list(cake@param:param()), integer(), cake@internal@dialect:dialect()}. -file("src/cake/internal/prepared_statement.gleam", 28). ?DOC(false). -spec new(binary(), cake@internal@dialect:dialect()) -> prepared_statement(). new(Placeholder_base, Dialect) -> _pipe = Placeholder_base, {prepared_statement, _pipe, <<""/utf8>>, [], 0, Dialect}. -file("src/cake/internal/prepared_statement.gleam", 110). ?DOC(false). -spec append_sql_and_params( prepared_statement(), binary(), list(cake@param:param()) ) -> prepared_statement(). append_sql_and_params(Prepared_statement, Sql, Params) -> {prepared_statement, erlang:element(2, Prepared_statement), <<(erlang:element(3, Prepared_statement))/binary, Sql/binary>>, begin _pipe = erlang:element(4, Prepared_statement), lists:append(_pipe, Params) end, erlang:element(5, Prepared_statement) + erlang:length(Params), erlang:element(6, Prepared_statement)}. -file("src/cake/internal/prepared_statement.gleam", 100). ?DOC(false). -spec append_sql_and_param(prepared_statement(), binary(), cake@param:param()) -> prepared_statement(). append_sql_and_param(Prepared_statement, Sql, Param) -> _pipe = Prepared_statement, append_sql_and_params(_pipe, Sql, [Param]). -file("src/cake/internal/prepared_statement.gleam", 123). ?DOC(false). -spec next_placeholder(prepared_statement(), cake@internal@dialect:dialect()) -> binary(). next_placeholder(Prepared_statement, Dialect) -> case Dialect of postgres -> <<(erlang:element(2, Prepared_statement))/binary, (begin _pipe = erlang:element(5, Prepared_statement), _pipe@1 = gleam@int:add(_pipe, 1), erlang:integer_to_binary(_pipe@1) end)/binary>>; sqlite -> <<(erlang:element(2, Prepared_statement))/binary, (begin _pipe = erlang:element(5, Prepared_statement), _pipe@1 = gleam@int:add(_pipe, 1), erlang:integer_to_binary(_pipe@1) end)/binary>>; maria -> erlang:element(2, Prepared_statement); mysql -> erlang:element(2, Prepared_statement) end. -file("src/cake/internal/prepared_statement.gleam", 39). ?DOC(false). -spec append_param(prepared_statement(), cake@param:param()) -> prepared_statement(). append_param(Prepared_statement, Param) -> Sql = begin _pipe = Prepared_statement, next_placeholder(_pipe, erlang:element(6, Prepared_statement)) end, _pipe@1 = Prepared_statement, append_sql_and_param(_pipe@1, Sql, Param). -file("src/cake/internal/prepared_statement.gleam", 56). ?DOC(false). -spec append_sql(prepared_statement(), binary()) -> prepared_statement(). append_sql(Prepared_statement, New_sql) -> {prepared_statement, erlang:element(2, Prepared_statement), <<(erlang:element(3, Prepared_statement))/binary, New_sql/binary>>, erlang:element(4, Prepared_statement), erlang:element(5, Prepared_statement), erlang:element(6, Prepared_statement)}. -file("src/cake/internal/prepared_statement.gleam", 68). ?DOC(false). -spec get_prefix(prepared_statement()) -> binary(). get_prefix(Prepared_statement) -> erlang:element(2, Prepared_statement). -file("src/cake/internal/prepared_statement.gleam", 76). ?DOC(false). -spec get_sql(prepared_statement()) -> binary(). get_sql(Prepared_statement) -> erlang:element(3, Prepared_statement). -file("src/cake/internal/prepared_statement.gleam", 84). ?DOC(false). -spec get_params(prepared_statement()) -> list(cake@param:param()). get_params(Prepared_statement) -> erlang:element(4, Prepared_statement). -file("src/cake/internal/prepared_statement.gleam", 92). ?DOC(false). -spec get_dialect(prepared_statement()) -> cake@internal@dialect:dialect(). get_dialect(Prepared_statement) -> erlang:element(6, Prepared_statement).