Current section

Files

Jump to
espresso_pgo_wrapper src database.erl
Raw

src/database.erl

-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, nil}.
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} ->
gleam@io:debug(E),
{error, nil}
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, nil}.
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, nil}
end;
{error, E} ->
gleam@io:debug(E),
{error, nil}
end.
-spec update(
database@query:'query'(FZB),
list({binary(), gleam@pgo:value()}),
gleam@pgo:connection()
) -> {ok, FZB} | {error, nil}.
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, nil}
end;
{error, E} ->
gleam@io:debug(E),
{error, nil}
end.
-spec delete(database@query:'query'(FZG), gleam@pgo:connection()) -> {ok, FZG} |
{error, nil}.
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, nil}
end;
{error, E} ->
gleam@io:debug(E),
{error, nil}
end.