-module(database). -compile([no_auto_import, nowarn_unused_vars]). -export([all/2, one/2, insert/3, update/3, delete/2]). -spec all(database@query:'query'(FYO), gleam@pgo:connection()) -> {ok, list(FYO)} | {error, gleam@pgo:query_error()}. all(Q, Db) -> Sql = database@query:build(Q), case gleam@pgo:execute( Sql, Db, erlang:element(5, Q), erlang:element(5, erlang:element(2, Q)) ) of {ok, Result} -> {ok, erlang:element(3, Result)}; {error, E} -> {error, E} end. -spec one(database@query:'query'(FYT), gleam@pgo:connection()) -> gleam@option:option(FYT). one(Q, Db) -> Sql = database@query:build(Q), case gleam@pgo:execute( Sql, Db, erlang:element(5, Q), erlang:element(5, erlang:element(2, Q)) ) of {ok, Result} -> _pipe = erlang:element(3, Result), _pipe@1 = gleam@list:first(_pipe), gleam@option:from_result(_pipe@1); {error, _} -> none end. -spec insert( database@schema:schema(FYW), list(gleam@pgo:value()), gleam@pgo:connection() ) -> {ok, FYW} | {error, gleam@pgo:query_error()}. insert(Schema, Data, Db) -> Sql = database@query:insert(Schema), case gleam@pgo:execute(Sql, Db, Data, erlang:element(5, Schema)) of {ok, Result} -> case gleam@list:first(erlang:element(3, Result)) of {ok, Result@1} -> {ok, Result@1}; {error, _} -> {error, {unexpected_result_type, []}} end; {error, E} -> gleam@io:debug(E), {error, E} end. -spec update( database@query:'query'(FZB), list({binary(), gleam@pgo:value()}), gleam@pgo:connection() ) -> {ok, FZB} | {error, gleam@pgo:query_error()}. update(Query, Data, Db) -> Sql = database@query:update(Query, Data), Bindings = gleam@list:append( erlang:element(5, Query), gleam@list:map( Data, fun(Field) -> {_, Value} = Field, Value end ) ), case gleam@pgo:execute( Sql, Db, Bindings, erlang:element(5, erlang:element(2, Query)) ) of {ok, Result} -> case gleam@list:first(erlang:element(3, Result)) of {ok, Result@1} -> {ok, Result@1}; {error, _} -> {error, {unexpected_result_type, []}} end; {error, E} -> gleam@io:debug(E), {error, E} end. -spec delete(database@query:'query'(FZG), gleam@pgo:connection()) -> {ok, FZG} | {error, gleam@pgo:query_error()}. delete(Query, Db) -> Sql = database@query:delete(Query), case gleam@pgo:execute( Sql, Db, erlang:element(5, Query), erlang:element(5, erlang:element(2, Query)) ) of {ok, Result} -> case gleam@list:first(erlang:element(3, Result)) of {ok, Result@1} -> {ok, Result@1}; {error, _} -> {error, {unexpected_result_type, []}} end; {error, E} -> gleam@io:debug(E), {error, E} end.