module Hasql.CursorTransaction.Sessions
  ( cursorTransaction,
  )
where

import qualified Hasql.CursorTransaction.Private.CursorTransaction as A
import Hasql.CursorTransaction.Private.Prelude
import qualified Hasql.Session as C
import qualified Hasql.Transaction.Sessions as D

-- |
-- Executes CursorTransaction in Session.
--
-- During the execution it establishes a Read transaction with the ReadCommitted isolation level.
cursorTransaction :: (forall s. A.CursorTransaction s result) -> C.Session result
cursorTransaction :: forall result.
(forall s. CursorTransaction s result) -> Session result
cursorTransaction forall s. CursorTransaction s result
cursorTransaction =
  IsolationLevel -> Mode -> Transaction result -> Session result
forall a. IsolationLevel -> Mode -> Transaction a -> Session a
D.transaction IsolationLevel
D.ReadCommitted Mode
D.Read ((forall s. CursorTransaction s result) -> Transaction result
forall result.
(forall s. CursorTransaction s result) -> Transaction result
A.run CursorTransaction s result
forall s. CursorTransaction s result
cursorTransaction)