-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))}.