postgresql-tx-squeal-0.3.0.0: postgresql-tx interfacing for use with squeal-postgresql.
Safe HaskellNone
LanguageHaskell2010

Database.PostgreSQL.Tx.Squeal.Internal

Synopsis

Disclaimer

Changes to this module will not be reflected in the library's version updates.

Internals

newtype SquealConnection Source #

Used in the SquealEnv to specify the Connection to use. Should produce the same Connection if called multiple times in the same transaction. Usually you will want to use mkSquealConnection to get one.

Since: 0.2.0.0

newtype SquealTxM' (db :: SchemasType) r a Source #

A newtype wrapper around TxM which includes the squeal SchemasType parameter db. This is used only as type information. You can easily convert TxM to and from SquealTxM' by using the SquealTxM' constructor and fromSquealTxM function, respectively.

In practice, you will likely prefer to use the SquealTxM type alias as it includes the SquealEnv constraint on r.

Since: 0.2.0.0

Constructors

SquealTxM 

Fields

Instances

Instances details
Monad (SquealTxM' db r) Source # 
Instance details

Defined in Database.PostgreSQL.Tx.Squeal.Internal

Methods

(>>=) :: SquealTxM' db r a -> (a -> SquealTxM' db r b) -> SquealTxM' db r b #

(>>) :: SquealTxM' db r a -> SquealTxM' db r b -> SquealTxM' db r b #

return :: a -> SquealTxM' db r a #

Functor (SquealTxM' db r) Source # 
Instance details

Defined in Database.PostgreSQL.Tx.Squeal.Internal

Methods

fmap :: (a -> b) -> SquealTxM' db r a -> SquealTxM' db r b #

(<$) :: a -> SquealTxM' db r b -> SquealTxM' db r a #

Applicative (SquealTxM' db r) Source # 
Instance details

Defined in Database.PostgreSQL.Tx.Squeal.Internal

Methods

pure :: a -> SquealTxM' db r a #

(<*>) :: SquealTxM' db r (a -> b) -> SquealTxM' db r a -> SquealTxM' db r b #

liftA2 :: (a -> b -> c) -> SquealTxM' db r a -> SquealTxM' db r b -> SquealTxM' db r c #

(*>) :: SquealTxM' db r a -> SquealTxM' db r b -> SquealTxM' db r b #

(<*) :: SquealTxM' db r a -> SquealTxM' db r b -> SquealTxM' db r a #

(TypeError ('Text "MonadIO is banned in SquealTxM'; use 'SquealTxM . unsafeRunIOInTxM' if you are sure this is safe IO") :: Constraint) => MonadIO (SquealTxM' db r) Source #

The SquealTxM' monad discourages performing arbitrary IO within a transaction, so this instance generates a type error when client code tries to call liftIO.

Note that we specialize this instance for SquealTxM' rather than derive it via newtype so we can provide a better error message.

Since: 0.2.0.0

Instance details

Defined in Database.PostgreSQL.Tx.Squeal.Internal

Methods

liftIO :: IO a -> SquealTxM' db r a #

type SquealTxM (db :: SchemasType) a = forall r. SquealEnv r => SquealTxM' db r a Source #

Alias for SquealTxM' but has the SquealEnv constraint applied to r.

Since: 0.2.0.0

type SquealM a = forall r. SquealEnv r => TxM r a Source #

Monad type alias for running squeal-postgresql via postgresql-tx.

Since: 0.2.0.0

type SquealEnv r = TxEnv SquealConnection r :: Constraint Source #

Runtime environment needed to run squeal-postgresql via postgresql-tx.

Since: 0.2.0.0

unsafeSquealIOTxM1 :: (x1 -> PQ db db IO a) -> x1 -> SquealTxM db a Source #

unsafeSquealIOTxM2 :: (x1 -> x2 -> PQ db db IO a) -> x1 -> x2 -> SquealTxM db a Source #

unsafeSquealIOTxM3 :: (x1 -> x2 -> x3 -> PQ db db IO a) -> x1 -> x2 -> x3 -> SquealTxM db a Source #

unsafeRunSquealTransaction :: forall r a. SquealEnv r => (forall db. PQ db db IO a -> PQ db db IO a) -> r -> TxM r a -> IO a Source #

transactionallyRetry' :: (MonadUnliftIO m, MonadPQ db m, Exception e) => TransactionMode -> (e -> Bool) -> m a -> m a Source #

A variant of transactionallyRetry which takes a predicate for determining when to retry instead of only doing so on serialization_failure.