polysemy-hasql-0.0.1.0: Polysemy effects for databases
Safe HaskellSafe-Inferred
LanguageHaskell2010

Polysemy.Hasql.Queue.Input

Synopsis

Documentation

tryDequeue :: Members [Monitor Restart, Reader QueueName, Log, Embed IO] r => Connection -> Sem r (Either Text (Maybe UUID)) Source #

Try to fetch a notification, and if there is none, wait on the connection's file descriptor until some data is received. This connection will be fully blocked when waiting, so it must not be shared with other parts of the application.

TODO Could it be possible to share a connection among all queues, only for waiting?

unlisten :: forall e r. Members [Database !! e, Reader QueueName, Log] r => Sem r () Source #

initQueue :: forall e d t r. Ord t => Members [Store UUID (Queued t d) !! e, Reader QueueName, Database, Log, Embed IO] r => (d -> Sem r ()) -> Sem r () Source #

dequeueLoop :: forall d t dt u r. Ord t => TimeUnit u => Members [Monitor Restart, Reader QueueName] r => Members [Store UUID (Queued t d) !! DbError, Database !! DbError, Time t dt, Log, Resource, Embed IO, Final IO] r => u -> (DbError -> Sem r Bool) -> TBMQueue d -> Sem r () Source #

startDequeueLoop :: forall d t dt u r. Ord t => TimeUnit u => Members [RestartingMonitor, Reader QueueName] r => Members [Store UUID (Queued t d) !! DbError, Databases, Time t dt, Log, Resource, Embed IO, Final IO] r => u -> (DbError -> Sem r Bool) -> TBMQueue d -> Sem r () Source #

dequeueThread :: forall d t dt u r. Ord t => TimeUnit u => Members [RestartingMonitor, Reader QueueName, Resource] r => Members [Store UUID (Queued t d) !! DbError, Databases, Time t dt, Log, Async, Embed IO, Final IO] r => u -> (DbError -> Sem r Bool) -> Sem r (Async (Maybe ()), TBMQueue d) Source #

interpretInputDbQueueListen :: forall (name :: Symbol) d t dt u r. Ord t => TimeUnit u => KnownSymbol name => Members [RestartingMonitor, Final IO] r => Members [Store UUID (Queued t d) !! DbError, Databases, Time t dt, Log, Resource, Async, Embed IO] r => u -> (DbError -> Sem r Bool) -> InterpreterFor (Input (Maybe d)) r Source #

interpretInputQueueDb :: forall qname u t dt d diff r. TimeUnit u => TimeUnit diff => Torsor t diff => Queue qname t => Members [Store UUID (Queued t d) !! DbError, Databases] r => Members [Time t dt, Log, Resource, Async, Race, Embed IO, Final IO] r => u -> ClockSkewConfig -> (DbError -> Sem r Bool) -> InterpreterFor (Input (Maybe d)) r Source #