Packages
cake
2.1.3
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@insert.erl
-module(cake@insert).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-define(FILEPATH, "src/cake/insert.gleam").
-export([to_query/1, row/1, bool/1, float/1, int/1, string/1, null/0, new/0, from_records/4, from_values/3, table/2, get_table/1, modifier/2, no_modifier/1, get_modifier/1, source_records/3, source_values/2, get_source/1, columns/2, get_columns/1, on_conflict_error/1, on_columns_conflict_ignore/3, on_constraint_conflict_ignore/3, on_columns_conflict_update/4, on_constraint_conflict_update/4, get_on_conflict/1, returning/2, no_returning/1, epilog/2, no_epilog/1, get_epilog/1, comment/2, no_comment/1, get_comment/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(
" A DSL to build `INSERT` queries.\n"
"\n"
).
-file("src/cake/insert.gleam", 61).
?DOC(" Creates a `WriteQuery` from an `Insert` query.\n").
-spec to_query(cake@internal@write_query:insert(TOZ)) -> cake@internal@write_query:write_query(TOZ).
to_query(Isrt) ->
_pipe = Isrt,
{insert_query, _pipe}.
-file("src/cake/insert.gleam", 69).
?DOC(" Create an `InsertRow` from a list of `InsertValue`s.\n").
-spec row(list(cake@internal@write_query:insert_value())) -> cake@internal@write_query:insert_row().
row(Vls) ->
_pipe = Vls,
{insert_row, _pipe}.
-file("src/cake/insert.gleam", 75).
?DOC(" Create an `InsertValue` from a column `String` and a `Bool` value.\n").
-spec bool(boolean()) -> cake@internal@write_query:insert_value().
bool(Vl) ->
_pipe = Vl,
_pipe@1 = {bool_param, _pipe},
{insert_param, _pipe@1}.
-file("src/cake/insert.gleam", 81).
?DOC(" Create an `InsertValue` from a column `String` and a `Float` value.\n").
-spec float(float()) -> cake@internal@write_query:insert_value().
float(Vl) ->
_pipe = Vl,
_pipe@1 = {float_param, _pipe},
{insert_param, _pipe@1}.
-file("src/cake/insert.gleam", 87).
?DOC(" Create an `InsertValue` from a column `String` and an `Int` value.\n").
-spec int(integer()) -> cake@internal@write_query:insert_value().
int(Vl) ->
_pipe = Vl,
_pipe@1 = {int_param, _pipe},
{insert_param, _pipe@1}.
-file("src/cake/insert.gleam", 93).
?DOC(" Create an `InsertValue` from a column `String` and a `String` value.\n").
-spec string(binary()) -> cake@internal@write_query:insert_value().
string(Vl) ->
_pipe = Vl,
_pipe@1 = {string_param, _pipe},
{insert_param, _pipe@1}.
-file("src/cake/insert.gleam", 99).
?DOC(" Create a NULL `InsertValue`.\n").
-spec null() -> cake@internal@write_query:insert_value().
null() ->
_pipe = null_param,
{insert_param, _pipe}.
-file("src/cake/insert.gleam", 107).
?DOC(" Create an empty `INSERT` query.\n").
-spec new() -> cake@internal@write_query:insert(any()).
new() ->
{insert,
no_insert_into_table,
no_insert_columns,
no_insert_modifier,
no_insert_source,
insert_conflict_error,
no_returning,
no_epilog,
no_comment}.
-file("src/cake/insert.gleam", 124).
?DOC(
" Create an `INSERT` query from a list of gleam records.\n"
"\n"
" The `encoder` function is used to convert each record into an `InsertRow`.\n"
).
-spec from_records(
binary(),
list(binary()),
list(TPG),
fun((TPG) -> cake@internal@write_query:insert_row())
) -> cake@internal@write_query:insert(TPG).
from_records(Tbl_nm, Cols, Rcrds, Encdr) ->
{insert,
begin
_pipe = Tbl_nm,
{insert_into_table, _pipe}
end,
begin
_pipe@1 = Cols,
{insert_columns, _pipe@1}
end,
no_insert_modifier,
begin
_pipe@2 = Rcrds,
{insert_source_records, _pipe@2, Encdr}
end,
insert_conflict_error,
no_returning,
no_epilog,
no_comment}.
-file("src/cake/insert.gleam", 144).
?DOC(" Create an `INSERT` query from a list of `InsertRow`s.\n").
-spec from_values(
binary(),
list(binary()),
list(cake@internal@write_query:insert_row())
) -> cake@internal@write_query:insert(any()).
from_values(Tbl_nm, Cols, Vls) ->
{insert,
begin
_pipe = Tbl_nm,
{insert_into_table, _pipe}
end,
begin
_pipe@1 = Cols,
{insert_columns, _pipe@1}
end,
no_insert_modifier,
begin
_pipe@2 = Vls,
{insert_source_rows, _pipe@2}
end,
insert_conflict_error,
no_returning,
no_epilog,
no_comment}.
-file("src/cake/insert.gleam", 165).
?DOC(" Specify the table to insert into.\n").
-spec table(cake@internal@write_query:insert(TPN), binary()) -> cake@internal@write_query:insert(TPN).
table(Isrt, Tbl_nm) ->
_record = Isrt,
{insert,
begin
_pipe = Tbl_nm,
{insert_into_table, _pipe}
end,
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
erlang:element(6, _record),
erlang:element(7, _record),
erlang:element(8, _record),
erlang:element(9, _record)}.
-file("src/cake/insert.gleam", 171).
?DOC(" Get the table name to insert into from an `Insert` query.\n").
-spec get_table(cake@internal@write_query:insert(any())) -> cake@internal@write_query:insert_into_table().
get_table(Isrt) ->
erlang:element(2, Isrt).
-file("src/cake/insert.gleam", 179).
?DOC(" Specify a modifier for the `INSERT` query.\n").
-spec modifier(cake@internal@write_query:insert(TPS), binary()) -> cake@internal@write_query:insert(TPS).
modifier(Isrt, Mdfr) ->
Mdfr@1 = begin
_pipe = Mdfr,
gleam@string:trim(_pipe)
end,
case Mdfr@1 of
<<""/utf8>> ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
no_insert_modifier,
erlang:element(5, _record),
erlang:element(6, _record),
erlang:element(7, _record),
erlang:element(8, _record),
erlang:element(9, _record)};
_ ->
_record@1 = Isrt,
{insert,
erlang:element(2, _record@1),
erlang:element(3, _record@1),
begin
_pipe@1 = Mdfr@1,
{insert_modifier, _pipe@1}
end,
erlang:element(5, _record@1),
erlang:element(6, _record@1),
erlang:element(7, _record@1),
erlang:element(8, _record@1),
erlang:element(9, _record@1)}
end.
-file("src/cake/insert.gleam", 189).
?DOC(" Specify that no modifier should be used for the given `INSERT` query.\n").
-spec no_modifier(cake@internal@write_query:insert(TPV)) -> cake@internal@write_query:insert(TPV).
no_modifier(Isrt) ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
no_insert_modifier,
erlang:element(5, _record),
erlang:element(6, _record),
erlang:element(7, _record),
erlang:element(8, _record),
erlang:element(9, _record)}.
-file("src/cake/insert.gleam", 195).
?DOC(" Get the modifier from an `Insert` query.\n").
-spec get_modifier(cake@internal@write_query:insert(any())) -> binary().
get_modifier(Isrt) ->
case erlang:element(4, Isrt) of
no_insert_modifier ->
<<""/utf8>>;
{insert_modifier, Mdfr} ->
Mdfr
end.
-file("src/cake/insert.gleam", 206).
?DOC(" Specify the source records to insert.\n").
-spec source_records(
cake@internal@write_query:insert(TQA),
list(TQA),
fun((TQA) -> cake@internal@write_query:insert_row())
) -> cake@internal@write_query:insert(TQA).
source_records(Isrt, Rcrds, Encdr) ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
begin
_pipe = Rcrds,
{insert_source_records, _pipe, Encdr}
end,
erlang:element(6, _record),
erlang:element(7, _record),
erlang:element(8, _record),
erlang:element(9, _record)}.
-file("src/cake/insert.gleam", 216).
?DOC(" Specify the source values to insert.\n").
-spec source_values(
cake@internal@write_query:insert(TQE),
list(cake@internal@write_query:insert_row())
) -> cake@internal@write_query:insert(TQE).
source_values(Isrt, Rws) ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
begin
_pipe = Rws,
{insert_source_rows, _pipe}
end,
erlang:element(6, _record),
erlang:element(7, _record),
erlang:element(8, _record),
erlang:element(9, _record)}.
-file("src/cake/insert.gleam", 226).
?DOC(
" Get the source from an `Insert` query which is either a list of records,\n"
" accompanied by a encoder function or a list of `InsertRow`s.\n"
).
-spec get_source(cake@internal@write_query:insert(TQI)) -> cake@internal@write_query:insert_source(TQI).
get_source(Isrt) ->
erlang:element(5, Isrt).
-file("src/cake/insert.gleam", 237).
?DOC(
" Specify the columns to insert into.\n"
"\n"
" NOTICE: You have to specify the columns and keep track if their names are\n"
" correct, as well as their count which must be equal to the count of\n"
" `InsertRows` the encoder function returns or is given as source\n"
" values.\n"
).
-spec columns(cake@internal@write_query:insert(TQL), list(binary())) -> cake@internal@write_query:insert(TQL).
columns(Isrt, Cols) ->
_record = Isrt,
{insert,
erlang:element(2, _record),
begin
_pipe = Cols,
{insert_columns, _pipe}
end,
erlang:element(4, _record),
erlang:element(5, _record),
erlang:element(6, _record),
erlang:element(7, _record),
erlang:element(8, _record),
erlang:element(9, _record)}.
-file("src/cake/insert.gleam", 243).
?DOC(" Get the columns to insert into from an `Insert` query.\n").
-spec get_columns(cake@internal@write_query:insert(any())) -> cake@internal@write_query:insert_columns().
get_columns(Isrt) ->
erlang:element(3, Isrt).
-file("src/cake/insert.gleam", 253).
?DOC(
" This specifies that any conflicts result in the query to fail\n"
"\n"
" This is the default behaviour.\n"
).
-spec on_conflict_error(cake@internal@write_query:insert(TQR)) -> cake@internal@write_query:insert(TQR).
on_conflict_error(Isrt) ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
insert_conflict_error,
erlang:element(7, _record),
erlang:element(8, _record),
erlang:element(9, _record)}.
-file("src/cake/insert.gleam", 262).
?DOC(
" This specifies that specific conflicts do not result in an error but instead\n"
" are just ignored and not inserted.\n"
"\n"
" Conflict Target: Columns\n"
).
-spec on_columns_conflict_ignore(
cake@internal@write_query:insert(TQU),
list(binary()),
cake@internal@read_query:where()
) -> cake@internal@write_query:insert(TQU).
on_columns_conflict_ignore(Isrt, Cols, Whr) ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
{insert_conflict_ignore,
begin
_pipe = Cols,
{insert_conflict_target, _pipe}
end,
Whr},
erlang:element(7, _record),
erlang:element(8, _record),
erlang:element(9, _record)}.
-file("src/cake/insert.gleam", 281).
?DOC(
" This specifies that specific conflicts do not result in an error but instead\n"
" are just ignored and not inserted.\n"
"\n"
" Conflict Target: Constraint\n"
).
-spec on_constraint_conflict_ignore(
cake@internal@write_query:insert(TQY),
binary(),
cake@internal@read_query:where()
) -> cake@internal@write_query:insert(TQY).
on_constraint_conflict_ignore(Isrt, Cnstrt, Whr) ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
{insert_conflict_ignore,
begin
_pipe = Cnstrt,
{insert_conflict_target_constraint, _pipe}
end,
Whr},
erlang:element(7, _record),
erlang:element(8, _record),
erlang:element(9, _record)}.
-file("src/cake/insert.gleam", 299).
?DOC(
" Inserts or updates on conflict, also called ´UPSERT´.\n"
"\n"
" Conflict Target: Columns\n"
).
-spec on_columns_conflict_update(
cake@internal@write_query:insert(TRB),
list(binary()),
cake@internal@read_query:where(),
cake@internal@write_query:update(TRB)
) -> cake@internal@write_query:insert(TRB).
on_columns_conflict_update(Isrt, Cols, Whr, Updt) ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
{insert_conflict_update,
begin
_pipe = Cols,
{insert_conflict_target, _pipe}
end,
Whr,
Updt},
erlang:element(7, _record),
erlang:element(8, _record),
erlang:element(9, _record)}.
-file("src/cake/insert.gleam", 319).
?DOC(
" Inserts or updates on conflict, also called ´UPSERT´.\n"
"\n"
" Conflict Target: Constraint\n"
).
-spec on_constraint_conflict_update(
cake@internal@write_query:insert(TRG),
binary(),
cake@internal@read_query:where(),
cake@internal@write_query:update(TRG)
) -> cake@internal@write_query:insert(TRG).
on_constraint_conflict_update(Isrt, Cnstrt, Whr, Updt) ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
{insert_conflict_update,
begin
_pipe = Cnstrt,
{insert_conflict_target_constraint, _pipe}
end,
Whr,
Updt},
erlang:element(7, _record),
erlang:element(8, _record),
erlang:element(9, _record)}.
-file("src/cake/insert.gleam", 337).
?DOC(" Get the conflict strategy from an `Insert` query.\n").
-spec get_on_conflict(cake@internal@write_query:insert(TRK)) -> cake@internal@write_query:insert_conflict_strategy(TRK).
get_on_conflict(Isrt) ->
erlang:element(6, Isrt).
-file("src/cake/insert.gleam", 345).
?DOC(" Specify the columns to return after the `INSERT` query.\n").
-spec returning(cake@internal@write_query:insert(TRN), list(binary())) -> cake@internal@write_query:insert(TRN).
returning(Isrt, Rtrn) ->
case Rtrn of
[] ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
erlang:element(6, _record),
no_returning,
erlang:element(8, _record),
erlang:element(9, _record)};
_ ->
_record@1 = Isrt,
{insert,
erlang:element(2, _record@1),
erlang:element(3, _record@1),
erlang:element(4, _record@1),
erlang:element(5, _record@1),
erlang:element(6, _record@1),
begin
_pipe = Rtrn,
{returning, _pipe}
end,
erlang:element(8, _record@1),
erlang:element(9, _record@1)}
end.
-file("src/cake/insert.gleam", 357).
?DOC(" Specify that no columns should be returned after the `INSERT` query.\n").
-spec no_returning(cake@internal@write_query:insert(TRR)) -> cake@internal@write_query:insert(TRR).
no_returning(Isrt) ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
erlang:element(6, _record),
no_returning,
erlang:element(8, _record),
erlang:element(9, _record)}.
-file("src/cake/insert.gleam", 365).
?DOC(" Specify an epilog for the `INSERT` query.\n").
-spec epilog(cake@internal@write_query:insert(TRU), binary()) -> cake@internal@write_query:insert(TRU).
epilog(Isrt, Eplg) ->
Eplg@1 = begin
_pipe = Eplg,
gleam@string:trim(_pipe)
end,
case Eplg@1 of
<<""/utf8>> ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
erlang:element(6, _record),
erlang:element(7, _record),
no_epilog,
erlang:element(9, _record)};
_ ->
_record@1 = Isrt,
{insert,
erlang:element(2, _record@1),
erlang:element(3, _record@1),
erlang:element(4, _record@1),
erlang:element(5, _record@1),
erlang:element(6, _record@1),
erlang:element(7, _record@1),
begin
_pipe@1 = (<<" "/utf8, Eplg@1/binary>>),
{epilog, _pipe@1}
end,
erlang:element(9, _record@1)}
end.
-file("src/cake/insert.gleam", 375).
?DOC(" Specify that no epilog should be added to the `INSERT` query.\n").
-spec no_epilog(cake@internal@write_query:insert(TRX)) -> cake@internal@write_query:insert(TRX).
no_epilog(Isrt) ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
erlang:element(6, _record),
erlang:element(7, _record),
no_epilog,
erlang:element(9, _record)}.
-file("src/cake/insert.gleam", 381).
?DOC(" Get the epilog from an `INSERT` query.\n").
-spec get_epilog(cake@internal@write_query:insert(any())) -> cake@internal@read_query:epilog().
get_epilog(Isrt) ->
erlang:element(8, Isrt).
-file("src/cake/insert.gleam", 389).
?DOC(" Specify a comment for the `INSERT` query.\n").
-spec comment(cake@internal@write_query:insert(TSC), binary()) -> cake@internal@write_query:insert(TSC).
comment(Isrt, Cmmnt) ->
Cmmnt@1 = begin
_pipe = Cmmnt,
gleam@string:trim(_pipe)
end,
case Cmmnt@1 of
<<""/utf8>> ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
erlang:element(6, _record),
erlang:element(7, _record),
erlang:element(8, _record),
no_comment};
_ ->
_record@1 = Isrt,
{insert,
erlang:element(2, _record@1),
erlang:element(3, _record@1),
erlang:element(4, _record@1),
erlang:element(5, _record@1),
erlang:element(6, _record@1),
erlang:element(7, _record@1),
erlang:element(8, _record@1),
begin
_pipe@1 = (<<" "/utf8, Cmmnt@1/binary>>),
{comment, _pipe@1}
end}
end.
-file("src/cake/insert.gleam", 399).
?DOC(" Specify that no comment should be added to the `INSERT` query.\n").
-spec no_comment(cake@internal@write_query:insert(TSF)) -> cake@internal@write_query:insert(TSF).
no_comment(Isrt) ->
_record = Isrt,
{insert,
erlang:element(2, _record),
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
erlang:element(6, _record),
erlang:element(7, _record),
erlang:element(8, _record),
no_comment}.
-file("src/cake/insert.gleam", 405).
?DOC(" Get the comment from an `INSERT` query.\n").
-spec get_comment(cake@internal@write_query:insert(any())) -> cake@internal@read_query:comment().
get_comment(Isrt) ->
erlang:element(9, Isrt).