Packages

SQL query builder core for Gleam

Current section

Files

Jump to
galchemy src galchemy@session@transaction.erl
Raw

src/galchemy@session@transaction.erl

-module(galchemy@session@transaction).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src\\galchemy\\session\\transaction.gleam").
-export(['begin'/2, connection/1, session/1, track/2, stage/2, flush/2, commit/2, rollback/1]).
-export_type([transaction_session/1, transaction_error/1]).
-type transaction_session(PKY) :: {transaction_session,
PKY,
galchemy@session@runtime:session()}.
-type transaction_error(PKZ) :: {track_error,
galchemy@session@runtime:track_error()} |
{execution_error, galchemy@session@runtime:session_execution_error(PKZ)}.
-file("src\\galchemy\\session\\transaction.gleam", 15).
-spec 'begin'(PLA, galchemy@session@runtime:session()) -> transaction_session(PLA).
'begin'(Connection, Session) ->
{transaction_session, Connection, Session}.
-file("src\\galchemy\\session\\transaction.gleam", 22).
-spec connection(transaction_session(PLC)) -> PLC.
connection(Transaction) ->
erlang:element(2, Transaction).
-file("src\\galchemy\\session\\transaction.gleam", 26).
-spec session(transaction_session(any())) -> galchemy@session@runtime:session().
session(Transaction) ->
erlang:element(3, Transaction).
-file("src\\galchemy\\session\\transaction.gleam", 30).
-spec track(transaction_session(PLG), galchemy@orm@entity:entity()) -> {ok,
transaction_session(PLG)} |
{error, transaction_error(any())}.
track(Transaction, Next_entity) ->
case galchemy@session@runtime:track(
erlang:element(3, Transaction),
Next_entity
) of
{ok, Next_session} ->
{ok,
{transaction_session,
erlang:element(2, Transaction),
Next_session}};
{error, Error} ->
{error, {track_error, Error}}
end.
-file("src\\galchemy\\session\\transaction.gleam", 41).
-spec stage(transaction_session(PLN), galchemy@orm@entity:entity()) -> {ok,
transaction_session(PLN)} |
{error, transaction_error(any())}.
stage(Transaction, Next_entity) ->
case galchemy@session@runtime:stage(
erlang:element(3, Transaction),
Next_entity
) of
{ok, Next_session} ->
{ok,
{transaction_session,
erlang:element(2, Transaction),
Next_session}};
{error, Error} ->
{error, {track_error, Error}}
end.
-file("src\\galchemy\\session\\transaction.gleam", 52).
-spec flush(
transaction_session(PLU),
fun((galchemy@ast@query:'query'(), PLU) -> {ok, PLW} | {error, PLX})
) -> {ok,
{galchemy@session@execution:flush_execution(PLW),
transaction_session(PLU)}} |
{error, transaction_error(PLX)}.
flush(Transaction, Executor) ->
case galchemy@session@runtime:flush(
erlang:element(3, Transaction),
fun(Next_query) ->
Executor(Next_query, erlang:element(2, Transaction))
end
) of
{ok, {Flush_result, Next_session}} ->
{ok,
{Flush_result,
{transaction_session,
erlang:element(2, Transaction),
Next_session}}};
{error, Error} ->
{error, {execution_error, Error}}
end.
-file("src\\galchemy\\session\\transaction.gleam", 73).
-spec commit(
transaction_session(PMF),
fun((galchemy@ast@query:'query'(), PMF) -> {ok, PMH} | {error, PMI})
) -> {ok,
{galchemy@session@execution:flush_execution(PMH),
galchemy@session@runtime:session()}} |
{error, transaction_error(PMI)}.
commit(Transaction, Executor) ->
case galchemy@session@runtime:commit(
erlang:element(3, Transaction),
fun(Next_query) ->
Executor(Next_query, erlang:element(2, Transaction))
end
) of
{ok, Result} ->
{ok, Result};
{error, Error} ->
{error, {execution_error, Error}}
end.
-file("src\\galchemy\\session\\transaction.gleam", 90).
-spec rollback(transaction_session(PMP)) -> transaction_session(PMP).
rollback(Transaction) ->
{transaction_session,
erlang:element(2, Transaction),
galchemy@session@runtime:rollback(erlang:element(3, Transaction))}.