arbiter-orville-0.1.0.0
arbiter-orville
Safe HaskellNone
LanguageGHC2024

Arbiter.Orville.OrvilleDb

Description

A MonadArbiter transformer over the application's Orville monad:

import Arbiter.Core qualified as Arb
import Arbiter.Orville qualified as ArbO
import Orville.PostgreSQL qualified as O

O.withTransaction $ do
  O.insertEntity ordersTable order
  ArbO.runOrvilleDb @MyRegistry ArbO.OrvilleEnv {ArbO.schema = "arbiter", ArbO.listener = Nothing} $
    Arb.insertJob (Arb.defaultJob (ProcessOrder orderId))

Queries run on the base monad's connection and join its open transaction.

Synopsis

Database monad

newtype OrvilleDb (registry :: JobPayloadRegistry) (m :: Type -> Type) aSource #

The Orville database monad. Handlers run in the base monad.

Constructors

OrvilleDb 

Fields

Instances

Instances details
MonadTrans (OrvilleDb registry) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

Methods

lift :: Monad m => m a -> OrvilleDb registry m a#

(MonadUnliftIO m, MonadOrville m) => MonadArbiter (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

Associated Types

type RegistryOf (OrvilleDb registry m) 
Instance details

Defined in Arbiter.Orville.OrvilleDb

type RegistryOf (OrvilleDb registry m) = registry

Methods

getSchema :: OrvilleDb registry m SchemaName#

executeQuery :: Query a -> OrvilleDb registry m [a]#

executeQueryPrepared :: Query a -> OrvilleDb registry m [a]#

executeStatement :: Query a -> OrvilleDb registry m Int64#

withDbTransaction :: OrvilleDb registry m a -> OrvilleDb registry m a#

runHandlerWithConnection :: JobHandler (OrvilleDb registry m) payload (ResultOf (OrvilleDb registry m) payload) -> JobRead payload -> OrvilleDb registry m (ResultOf (OrvilleDb registry m) payload)#

getListener :: OrvilleDb registry m (Maybe Listener)#

MonadCatch m => MonadCatch (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

Methods

catch :: (HasCallStack, Exception e) => OrvilleDb registry m a -> (e -> OrvilleDb registry m a) -> OrvilleDb registry m a#

catchNoPropagate :: Exception e => OrvilleDb registry m a -> (ExceptionWithContext e -> OrvilleDb registry m a) -> OrvilleDb registry m a#

MonadMask m => MonadMask (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

Methods

mask :: HasCallStack => ((forall a. OrvilleDb registry m a -> OrvilleDb registry m a) -> OrvilleDb registry m b) -> OrvilleDb registry m b#

uninterruptibleMask :: HasCallStack => ((forall a. OrvilleDb registry m a -> OrvilleDb registry m a) -> OrvilleDb registry m b) -> OrvilleDb registry m b#

generalBracket :: HasCallStack => OrvilleDb registry m a -> (a -> ExitCase b -> OrvilleDb registry m c) -> (a -> OrvilleDb registry m b) -> OrvilleDb registry m (b, c)#

MonadThrow m => MonadThrow (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

Methods

throwM :: (HasCallStack, Exception e) => e -> OrvilleDb registry m a#

rethrowM :: Exception e => ExceptionWithContext e -> OrvilleDb registry m a#

Applicative m => Applicative (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

Methods

pure :: a -> OrvilleDb registry m a#

(<*>) :: OrvilleDb registry m (a -> b) -> OrvilleDb registry m a -> OrvilleDb registry m b#

liftA2 :: (a -> b -> c) -> OrvilleDb registry m a -> OrvilleDb registry m b -> OrvilleDb registry m c#

(*>) :: OrvilleDb registry m a -> OrvilleDb registry m b -> OrvilleDb registry m b#

(<*) :: OrvilleDb registry m a -> OrvilleDb registry m b -> OrvilleDb registry m a#

Functor m => Functor (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

Methods

fmap :: (a -> b) -> OrvilleDb registry m a -> OrvilleDb registry m b#

(<$) :: a -> OrvilleDb registry m b -> OrvilleDb registry m a#

Monad m => Monad (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

Methods

(>>=) :: OrvilleDb registry m a -> (a -> OrvilleDb registry m b) -> OrvilleDb registry m b#

(>>) :: OrvilleDb registry m a -> OrvilleDb registry m b -> OrvilleDb registry m b#

return :: a -> OrvilleDb registry m a#

MonadFail m => MonadFail (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

Methods

fail :: HasCallStack => String -> OrvilleDb registry m a#

MonadIO m => MonadIO (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

Methods

liftIO :: IO a -> OrvilleDb registry m a#

MonadOrville m => MonadOrville (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

MonadOrvilleControl m => MonadOrvilleControl (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

Methods

liftWithConnection :: (forall a. (Connection -> IO a) -> IO a) -> (Connection -> OrvilleDb registry m b) -> OrvilleDb registry m b#

liftCatch :: Exception e => (forall a. IO a -> (e -> IO a) -> IO a) -> OrvilleDb registry m b -> (e -> OrvilleDb registry m b) -> OrvilleDb registry m b#

liftMask :: (forall b. ((forall a. IO a -> IO a) -> IO b) -> IO b) -> ((forall a. OrvilleDb registry m a -> OrvilleDb registry m a) -> OrvilleDb registry m c) -> OrvilleDb registry m c#

(Monad m, HasOrvilleState m) => HasOrvilleState (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

Methods

askOrvilleState :: OrvilleDb registry m OrvilleState#

localOrvilleState :: (OrvilleState -> OrvilleState) -> OrvilleDb registry m a -> OrvilleDb registry m a#

MonadUnliftIO m => MonadUnliftIO (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

Methods

withRunInIO :: ((forall a. OrvilleDb registry m a -> IO a) -> IO b) -> OrvilleDb registry m b#

type RegistryOf (OrvilleDb registry m) Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

type RegistryOf (OrvilleDb registry m) = registry
type Handler (OrvilleDb registry m) job result Source # 
Instance details

Defined in Arbiter.Orville.OrvilleDb

type Handler (OrvilleDb registry m) job result = job -> m result

data OrvilleEnv (registry :: JobPayloadRegistry)Source #

The schema of the arbiter tables and an optional LISTEN/NOTIFY listener.

Constructors

OrvilleEnv 

Fields

runOrvilleDb :: forall (registry :: JobPayloadRegistry) m a. OrvilleEnv registry -> OrvilleDb registry m a -> m aSource #

Run an OrvilleDb action in the base monad.

Connection options

toOrvilleConnectionOptions :: ByteString -> PoolConfig -> ConnectionOptionsSource #

Arguments

:: ByteString

PostgreSQL connection string

-> PoolConfig

Arbiter pool configuration

-> ConnectionOptions 

Orville ConnectionOptions from an arbiter PoolConfig. Notice reporting is off.