module Hasql.Transaction.Private.Transaction
where
import Hasql.Transaction.Private.Prelude
import Hasql.Transaction.Private.Model
import qualified Hasql.Query as A
import qualified Hasql.Session as B
import qualified Hasql.Transaction.Private.Queries as C
import qualified Hasql.Transaction.Private.Sessions as D
newtype Transaction a =
Transaction (StateT Bool B.Session a)
deriving (Functor, Applicative, Monad)
run :: Transaction a -> IsolationLevel -> Mode -> B.Session a
run (Transaction session) isolation mode =
D.inRetryingTransaction isolation mode (runStateT session True)
sql :: ByteString -> Transaction ()
sql =
Transaction . lift . B.sql
query :: a -> A.Query a b -> Transaction b
query params query =
Transaction . lift $ B.query params query
condemn :: Transaction ()
condemn =
Transaction $ put False