Packages

SQL query builder core for Gleam

Current section

Files

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

src/galchemy@examples@join_example.erl

-module(galchemy@examples@join_example).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src\\galchemy\\examples\\join_example.gleam").
-export([build_query/0, main/0]).
-file("src\\galchemy\\examples\\join_example.gleam", 10).
-spec build_query() -> galchemy@ast@expression:select_query().
build_query() ->
Users = galchemy@dsl@table:as_(
galchemy@dsl@table:table(<<"users"/utf8>>),
<<"u"/utf8>>
),
Posts = galchemy@dsl@table:as_(
galchemy@dsl@table:table(<<"posts"/utf8>>),
<<"p"/utf8>>
),
User_id = galchemy@dsl@table:int(Users, <<"id"/utf8>>),
User_name = galchemy@dsl@table:text(Users, <<"name"/utf8>>),
Post_user_id = galchemy@dsl@table:int(Posts, <<"user_id"/utf8>>),
Post_published = galchemy@dsl@table:bool(Posts, <<"published"/utf8>>),
_pipe = galchemy@dsl@select:select(
[galchemy@dsl@expr:item(galchemy@dsl@expr:col(User_id)),
galchemy@dsl@expr:item(galchemy@dsl@expr:col(User_name)),
galchemy@dsl@expr:as_(
galchemy@dsl@expr:col(Post_user_id),
<<"author_id"/utf8>>
)]
),
_pipe@1 = galchemy@dsl@select:from(_pipe, Users),
_pipe@2 = galchemy@dsl@select:inner_join(
_pipe@1,
Posts,
galchemy@dsl@predicate:eq(
galchemy@dsl@expr:col(User_id),
galchemy@dsl@expr:col(Post_user_id)
)
),
galchemy@dsl@select:where_(
_pipe@2,
galchemy@dsl@predicate:eq(
galchemy@dsl@expr:col(Post_published),
galchemy@dsl@expr:bool(true)
)
).
-file("src\\galchemy\\examples\\join_example.gleam", 31).
-spec main() -> nil.
main() ->
gleam_stdlib:println(<<"Join example"/utf8>>),
gleam_stdlib:println(
gleam@string:inspect(galchemy:compile({select, build_query()}))
).