Packages

SQL query builder core for Gleam

Current section

Files

Jump to
galchemy src galchemy@dsl@insert.erl
Raw

src/galchemy@dsl@insert.erl

-module(galchemy@dsl@insert).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src\\galchemy\\dsl\\insert.gleam").
-export([insert_into/1, field/2, row/2, values/2, returning/2, value/3]).
-file("src\\galchemy\\dsl\\insert.gleam", 7).
-spec insert_into(galchemy@ast@schema:table()) -> galchemy@ast@query:insert_query().
insert_into(Table) ->
{insert_query, Table, [], []}.
-file("src\\galchemy\\dsl\\insert.gleam", 12).
-spec field(
galchemy@ast@schema:column(any()),
galchemy@ast@expression:expression()
) -> {galchemy@ast@schema:column_meta(), galchemy@ast@expression:expression()}.
field(Column, Expr) ->
{erlang:element(2, Column), Expr}.
-file("src\\galchemy\\dsl\\insert.gleam", 29).
-spec row(
galchemy@ast@query:insert_query(),
list({galchemy@ast@schema:column_meta(),
galchemy@ast@expression:expression()})
) -> galchemy@ast@query:insert_query().
row(Query, Values) ->
{insert_query,
erlang:element(2, Query),
lists:append(erlang:element(3, Query), [Values]),
erlang:element(4, Query)}.
-file("src\\galchemy\\dsl\\insert.gleam", 37).
-spec values(
galchemy@ast@query:insert_query(),
list(list({galchemy@ast@schema:column_meta(),
galchemy@ast@expression:expression()}))
) -> galchemy@ast@query:insert_query().
values(Query, Rows) ->
{insert_query, erlang:element(2, Query), Rows, erlang:element(4, Query)}.
-file("src\\galchemy\\dsl\\insert.gleam", 45).
-spec returning(
galchemy@ast@query:insert_query(),
list(galchemy@ast@expression:select_item())
) -> galchemy@ast@query:insert_query().
returning(Query, Items) ->
{insert_query, erlang:element(2, Query), erlang:element(3, Query), Items}.
-file("src\\galchemy\\dsl\\insert.gleam", 59).
-spec append_field_to_last_row(
list(list({galchemy@ast@schema:column_meta(),
galchemy@ast@expression:expression()})),
{galchemy@ast@schema:column_meta(), galchemy@ast@expression:expression()}
) -> list(list({galchemy@ast@schema:column_meta(),
galchemy@ast@expression:expression()})).
append_field_to_last_row(Rows, Pair) ->
case Rows of
[] ->
[[Pair]];
[Last_row] ->
[lists:append(Last_row, [Pair])];
[First | Rest] ->
[First | append_field_to_last_row(Rest, Pair)]
end.
-file("src\\galchemy\\dsl\\insert.gleam", 52).
-spec append_field(
galchemy@ast@query:insert_query(),
{galchemy@ast@schema:column_meta(), galchemy@ast@expression:expression()}
) -> galchemy@ast@query:insert_query().
append_field(Query, Pair) ->
{insert_query,
erlang:element(2, Query),
append_field_to_last_row(erlang:element(3, Query), Pair),
erlang:element(4, Query)}.
-file("src\\galchemy\\dsl\\insert.gleam", 20).
-spec value(
galchemy@ast@query:insert_query(),
galchemy@ast@schema:column(any()),
galchemy@ast@expression:expression()
) -> galchemy@ast@query:insert_query().
value(Query, Column, Expr) ->
append_field(Query, field(Column, Expr)).