module Hasql.Transaction.Private.Statements where

import Hasql.Decoders qualified as C
import Hasql.Encoders qualified as B
import Hasql.Statement qualified as A
import Hasql.Transaction.Config
import Hasql.Transaction.Private.Prelude
import Hasql.Transaction.Private.SQL qualified as D

beginTransaction :: IsolationLevel -> Mode -> A.Statement () ()
beginTransaction :: IsolationLevel -> Mode -> Statement () ()
beginTransaction IsolationLevel
isolation Mode
mode =
  ByteString -> Params () -> Result () -> Bool -> Statement () ()
forall params result.
ByteString
-> Params params
-> Result result
-> Bool
-> Statement params result
A.Statement (IsolationLevel -> Mode -> ByteString
D.beginTransaction IsolationLevel
isolation Mode
mode) Params ()
B.noParams Result ()
C.noResult Bool
True

commitTransaction :: A.Statement () ()
commitTransaction :: Statement () ()
commitTransaction =
  ByteString -> Params () -> Result () -> Bool -> Statement () ()
forall params result.
ByteString
-> Params params
-> Result result
-> Bool
-> Statement params result
A.Statement ByteString
"COMMIT" Params ()
B.noParams Result ()
C.noResult Bool
True

abortTransaction :: A.Statement () ()
abortTransaction :: Statement () ()
abortTransaction =
  ByteString -> Params () -> Result () -> Bool -> Statement () ()
forall params result.
ByteString
-> Params params
-> Result result
-> Bool
-> Statement params result
A.Statement ByteString
"ABORT" Params ()
B.noParams Result ()
C.noResult Bool
True