Current section

Files

Jump to
cake src cake.erl
Raw

src/cake.erl

-module(cake).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/cake.gleam").
-export([to_read_query/1, to_write_query/1, read_query_to_prepared_statement/2, write_query_to_prepared_statement/2, to_prepared_statement/2, get_sql/1, get_params/1, main/0]).
-export_type([cake_query/1]).
-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(
" *Cake* is an SQL query building library for RDBMS:\n"
"\n"
" - 🐘PostgreSQL\n"
" - 🪶SQLite\n"
" - 🦭MariaDB\n"
" - 🐬MySQL\n"
"\n"
" For examples see the tests.\n"
"\n"
).
-type cake_query(SFI) :: {cake_read_query,
cake@internal@read_query:read_query()} |
{cake_write_query, cake@internal@write_query:write_query(SFI)}.
-file("src/cake.gleam", 42).
?DOC(
" Create a Cake read query from a read query.\n"
"\n"
" Also see `cake/dialect/*` for dialect specific implementations of this.\n"
).
-spec to_read_query(cake@internal@read_query:read_query()) -> cake_query(any()).
to_read_query(Qry) ->
_pipe = Qry,
{cake_read_query, _pipe}.
-file("src/cake.gleam", 50).
?DOC(
" Create a Cake write query from a write query.\n"
"\n"
" Also see `cake/dialect/*` for dialect specific implementations of this.\n"
).
-spec to_write_query(cake@internal@write_query:write_query(SFN)) -> cake_query(SFN).
to_write_query(Qry) ->
_pipe = Qry,
{cake_write_query, _pipe}.
-file("src/cake.gleam", 74).
?DOC(" Create a prepared statement from a read query.\n").
-spec read_query_to_prepared_statement(
cake@internal@read_query:read_query(),
cake@internal@dialect:dialect()
) -> cake@internal@prepared_statement:prepared_statement().
read_query_to_prepared_statement(Qry, Dlct) ->
_pipe = Dlct,
_pipe@1 = cake@internal@dialect:placeholder_base(_pipe),
cake@internal@read_query:to_prepared_statement(Qry, _pipe@1, Dlct).
-file("src/cake.gleam", 85).
?DOC(" Create a prepared statement from a write query.\n").
-spec write_query_to_prepared_statement(
cake@internal@write_query:write_query(any()),
cake@internal@dialect:dialect()
) -> cake@internal@prepared_statement:prepared_statement().
write_query_to_prepared_statement(Qry, Dlct) ->
_pipe = Dlct,
_pipe@1 = cake@internal@dialect:placeholder_base(_pipe),
cake@internal@write_query:to_prepared_statement(Qry, _pipe@1, Dlct).
-file("src/cake.gleam", 58).
?DOC(
" Create a prepared statement from a Cake query.\n"
"\n"
" Also see `cake/dialect/*` for dialect specific implementations of this.\n"
).
-spec to_prepared_statement(cake_query(any()), cake@internal@dialect:dialect()) -> cake@internal@prepared_statement:prepared_statement().
to_prepared_statement(Qry, Dlct) ->
case Qry of
{cake_read_query, Rd_qry} ->
_pipe = Rd_qry,
read_query_to_prepared_statement(_pipe, Dlct);
{cake_write_query, Wt_qry} ->
_pipe@1 = Wt_qry,
write_query_to_prepared_statement(_pipe@1, Dlct)
end.
-file("src/cake.gleam", 96).
?DOC(" Get the SQL of the prepared statement.\n").
-spec get_sql(cake@internal@prepared_statement:prepared_statement()) -> binary().
get_sql(Prp_stm) ->
_pipe = Prp_stm,
cake@internal@prepared_statement:get_sql(_pipe).
-file("src/cake.gleam", 102).
?DOC(" Get the parameters of the prepared statement.\n").
-spec get_params(cake@internal@prepared_statement:prepared_statement()) -> list(cake@param:param()).
get_params(Prp_stm) ->
_pipe = Prp_stm,
cake@internal@prepared_statement:get_params(_pipe).
-file("src/cake.gleam", 108).
?DOC(" As a library *Cake* cannot be invoked directly in a meaningful way.\n").
-spec main() -> nil.
main() ->
_pipe = (<<<<<<"\n"/utf8,
"cake is a query building library and cannot be invoked directly."/utf8>>/binary,
"\n"/utf8>>/binary,
"For demos see the tests."/utf8>>),
gleam_stdlib:println(_pipe).