Packages

SQL query builder core for Gleam

Current section

Files

Jump to
galchemy src galchemy@examples@simple_select.erl
Raw

src/galchemy@examples@simple_select.erl

-module(galchemy@examples@simple_select).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src\\galchemy\\examples\\simple_select.gleam").
-export([build_query/0, row_decoder/0, run/1, main/0]).
-file("src\\galchemy\\examples\\simple_select.gleam", 13).
-spec build_query() -> galchemy@ast@expression:select_query().
build_query() ->
Users = galchemy@dsl@table:as_(
galchemy@dsl@table:table(<<"users"/utf8>>),
<<"u"/utf8>>
),
Id = galchemy@dsl@table:int(Users, <<"id"/utf8>>),
Name = galchemy@dsl@table:text(Users, <<"name"/utf8>>),
Active = galchemy@dsl@table:bool(Users, <<"active"/utf8>>),
_pipe = galchemy@dsl@select:select(
[galchemy@dsl@expr:item(galchemy@dsl@expr:col(Id)),
galchemy@dsl@expr:item(galchemy@dsl@expr:col(Name))]
),
_pipe@1 = galchemy@dsl@select:from(_pipe, Users),
_pipe@2 = galchemy@dsl@select:where_(
_pipe@1,
galchemy@dsl@predicate:'and'(
galchemy@dsl@predicate:eq(
galchemy@dsl@expr:col(Active),
galchemy@dsl@expr:bool(true)
),
galchemy@dsl@predicate:ilike(
galchemy@dsl@expr:col(Name),
galchemy@dsl@expr:text(<<"A%"/utf8>>)
)
)
),
_pipe@3 = galchemy@dsl@select:order_by(
_pipe@2,
galchemy@dsl@select:asc(galchemy@dsl@expr:col(Id))
),
galchemy@dsl@select:limit(_pipe@3, 20).
-file("src\\galchemy\\examples\\simple_select.gleam", 32).
-spec row_decoder() -> gleam@dynamic@decode:decoder({integer(), binary()}).
row_decoder() ->
_pipe = gleam@dynamic@decode:at(
[0],
{decoder, fun gleam@dynamic@decode:decode_int/1}
),
gleam@dynamic@decode:then(
_pipe,
fun(Id) ->
_pipe@1 = gleam@dynamic@decode:at(
[1],
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
gleam@dynamic@decode:map(_pipe@1, fun(Name) -> {Id, Name} end)
end
).
-file("src\\galchemy\\examples\\simple_select.gleam", 40).
-spec run(pog:connection()) -> {ok, pog:returned({integer(), binary()})} |
{error, galchemy@sql@postgres:postgres_error()}.
run(Connection) ->
galchemy@sql@postgres:execute_with(
{select, build_query()},
row_decoder(),
Connection
).
-file("src\\galchemy\\examples\\simple_select.gleam", 44).
-spec main() -> nil.
main() ->
gleam_stdlib:println(<<"Simple select example"/utf8>>),
gleam_stdlib:println(
gleam@string:inspect(galchemy:compile({select, build_query()}))
).