Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Marconi.Core.Class
Description
Base typeclasses to index events.
See Marconi.Core for documentation.
Synopsis
- class Monad m => IsIndex m event indexer where
- index :: Eq (Point event) => Timed (Point event) (Maybe event) -> indexer event -> m (indexer event)
- indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> indexer event -> m (indexer event)
- indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> indexer event -> m (indexer event)
- rollback :: Ord (Point event) => Point event -> indexer event -> m (indexer event)
- setLastStablePoint :: Ord (Point event) => Point event -> indexer event -> m (indexer event)
- indexIfJust :: IsIndex m event indexer => (Timed (Point event) event -> indexer event -> m (indexer event)) -> (Point event -> indexer event -> m (indexer event)) -> Timed (Point event) (Maybe event) -> indexer event -> m (indexer event)
- indexEither :: (IsIndex (ExceptT err m) event indexer, Eq (Point event)) => Timed (Point event) (Maybe event) -> indexer event -> m (Either err (indexer event))
- indexAllEither :: (IsIndex (ExceptT err m) event indexer, Traversable f, Ord (Point event)) => f (Timed (Point event) (Maybe event)) -> indexer event -> m (Either err (indexer event))
- indexAllDescendingEither :: (IsIndex (ExceptT err m) event indexer, Traversable f, Ord (Point event)) => f (Timed (Point event) (Maybe event)) -> indexer event -> m (Either err (indexer event))
- class HasGenesis (Point event) => Resetable m event indexer where
- reset :: indexer event -> m (indexer event)
- class Queryable m event query indexer where
- queryEither :: Queryable (ExceptT (QueryError query) m) event query indexer => Ord (Point event) => Point event -> query -> indexer event -> m (Either (QueryError query) (Result query))
- queryLatestEither :: Queryable (ExceptT (QueryError query) m) event query indexer => IsSync m event indexer => Monad m => Ord (Point event) => query -> indexer event -> m (Either (QueryError query) (Result query))
- class AppendResult m event query indexer where
- class Closeable m indexer where
- close :: indexer event -> m ()
- class Functor m => IsSync m event indexer where
- lastStablePoint :: indexer event -> m (Point event)
- lastSyncPoint :: indexer event -> m (Point event)
- isAheadOfSync :: (Ord (Point event), IsSync m event indexer) => Point event -> indexer event -> m Bool
- class HasGenesis t where
- genesis :: t
Documentation
class Monad m => IsIndex m event indexer where #
The base class of an indexer, providing its key functionalities: indexing events and handling rollbacks.
indexer
the indexer implementation typeevent
the indexed eventsm
the monad in which our indexer operates
Rules:
- Rollback to last indexed point do nothing:
rollback p <=< index (Timed p evt) === index (Timed p evt)
; - Rollback eliminate intermediate indexing
(precondition: none of the
point
inxs
are equal top
):rollback p <=< indexAll events <=< index (Timed p evt) === index (Timed p evt)
; - Rollback is idempotent:
rollback p <=< rollback p === rollback p
.
Minimal complete definition
Methods
index :: Eq (Point event) => Timed (Point event) (Maybe event) -> indexer event -> m (indexer event) #
index an event at a given point in time
indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> indexer event -> m (indexer event) #
Index a bunch of event, associated to their point in time, in an indexer
The events must be sorted in ascending order (the most recent first)
indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> indexer event -> m (indexer event) #
Index a bunch of event, associated to their point in time, in an indexer
The events must be sorted in descending order (the most recent first)
rollback :: Ord (Point event) => Point event -> indexer event -> m (indexer event) #
Rollback to a previous point
setLastStablePoint :: Ord (Point event) => Point event -> indexer event -> m (indexer event) #
Set the last stable point known by the indexer. Note that the last stable point should always increase, so implementation should usually filter out lower stable points.
Instances
(MonadIO m, MonadError IndexerError m) => IsIndex m a LastEventIndexer # | |
Defined in Marconi.Core.Indexer.LastEventIndexer Methods index :: Timed (Point a) (Maybe a) -> LastEventIndexer a -> m (LastEventIndexer a) # indexAll :: (Eq (Point a), Traversable f) => f (Timed (Point a) (Maybe a)) -> LastEventIndexer a -> m (LastEventIndexer a) # indexAllDescending :: (Eq (Point a), Traversable f) => f (Timed (Point a) (Maybe a)) -> LastEventIndexer a -> m (LastEventIndexer a) # rollback :: Point a -> LastEventIndexer a -> m (LastEventIndexer a) # setLastStablePoint :: Point a -> LastEventIndexer a -> m (LastEventIndexer a) # | |
(MonadIO m, MonadError IndexerError m) => IsIndex m event Coordinator # | |
Defined in Marconi.Core.Coordinator Methods index :: Timed (Point event) (Maybe event) -> Coordinator event -> m (Coordinator event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> Coordinator event -> m (Coordinator event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> Coordinator event -> m (Coordinator event) # rollback :: Point event -> Coordinator event -> m (Coordinator event) # setLastStablePoint :: Point event -> Coordinator event -> m (Coordinator event) # | |
(HasGenesis (Point event), Monad m) => IsIndex m event LastPointIndexer # | |
Defined in Marconi.Core.Indexer.LastPointIndexer Methods index :: Timed (Point event) (Maybe event) -> LastPointIndexer event -> m (LastPointIndexer event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> LastPointIndexer event -> m (LastPointIndexer event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> LastPointIndexer event -> m (LastPointIndexer event) # rollback :: Point event -> LastPointIndexer event -> m (LastPointIndexer event) # setLastStablePoint :: Point event -> LastPointIndexer event -> m (LastPointIndexer event) # | |
Monad m => IsIndex m event ListIndexer # | |
Defined in Marconi.Core.Indexer.ListIndexer Methods index :: Timed (Point event) (Maybe event) -> ListIndexer event -> m (ListIndexer event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> ListIndexer event -> m (ListIndexer event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> ListIndexer event -> m (ListIndexer event) # rollback :: Point event -> ListIndexer event -> m (ListIndexer event) # setLastStablePoint :: Point event -> ListIndexer event -> m (ListIndexer event) # | |
(MonadIO m, MonadError IndexerError m, ToRow (Point event)) => IsIndex m event SQLiteIndexer # | |
Defined in Marconi.Core.Indexer.SQLiteIndexer Methods index :: Timed (Point event) (Maybe event) -> SQLiteIndexer event -> m (SQLiteIndexer event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> SQLiteIndexer event -> m (SQLiteIndexer event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> SQLiteIndexer event -> m (SQLiteIndexer event) # rollback :: Point event -> SQLiteIndexer event -> m (SQLiteIndexer event) # setLastStablePoint :: Point event -> SQLiteIndexer event -> m (SQLiteIndexer event) # | |
(MonadIO io, MonadError IndexerError io) => IsIndex io event (FileIndexer meta) # | |
Defined in Marconi.Core.Indexer.FileIndexer Methods index :: Timed (Point event) (Maybe event) -> FileIndexer meta event -> io (FileIndexer meta event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> FileIndexer meta event -> io (FileIndexer meta event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> FileIndexer meta event -> io (FileIndexer meta event) # rollback :: Point event -> FileIndexer meta event -> io (FileIndexer meta event) # setLastStablePoint :: Point event -> FileIndexer meta event -> io (FileIndexer meta event) # | |
(MonadIO m, MonadError IndexerError m, IsIndex m event indexer) => IsIndex m event (WithAction indexer) # | |
Defined in Marconi.Core.Transformer.WithAction Methods index :: Timed (Point event) (Maybe event) -> WithAction indexer event -> m (WithAction indexer event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithAction indexer event -> m (WithAction indexer event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithAction indexer event -> m (WithAction indexer event) # rollback :: Point event -> WithAction indexer event -> m (WithAction indexer event) # setLastStablePoint :: Point event -> WithAction indexer event -> m (WithAction indexer event) # | |
(MonadIO m, IsIndex m event indexer, Ord (Point event)) => IsIndex m event (WithCatchup indexer) # | |
Defined in Marconi.Core.Transformer.WithCatchup Methods index :: Timed (Point event) (Maybe event) -> WithCatchup indexer event -> m (WithCatchup indexer event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithCatchup indexer event -> m (WithCatchup indexer event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithCatchup indexer event -> m (WithCatchup indexer event) # rollback :: Point event -> WithCatchup indexer event -> m (WithCatchup indexer event) # setLastStablePoint :: Point event -> WithCatchup indexer event -> m (WithCatchup indexer event) # | |
(Monad m, IsIndex m event indexer, Ord (Point event)) => IsIndex m event (WithDelay indexer) # | |
Defined in Marconi.Core.Transformer.WithDelay Methods index :: Timed (Point event) (Maybe event) -> WithDelay indexer event -> m (WithDelay indexer event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithDelay indexer event -> m (WithDelay indexer event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithDelay indexer event -> m (WithDelay indexer event) # rollback :: Point event -> WithDelay indexer event -> m (WithDelay indexer event) # setLastStablePoint :: Point event -> WithDelay indexer event -> m (WithDelay indexer event) # | |
(MonadError IndexerError m, Ord (Point event), Prunable m event indexer, IsIndex m event indexer, HasGenesis (Point event)) => IsIndex m event (WithPruning indexer) # | |
Defined in Marconi.Core.Transformer.WithPruning Methods index :: Timed (Point event) (Maybe event) -> WithPruning indexer event -> m (WithPruning indexer event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithPruning indexer event -> m (WithPruning indexer event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithPruning indexer event -> m (WithPruning indexer event) # rollback :: Point event -> WithPruning indexer event -> m (WithPruning indexer event) # setLastStablePoint :: Point event -> WithPruning indexer event -> m (WithPruning indexer event) # | |
(Ord (Point event), Flushable m event mem, Traversable (Container mem), IsIndex m event store, IsIndex m event mem, IsSync m event mem) => IsIndex m event (MixedIndexer store mem) # | |
Defined in Marconi.Core.Indexer.MixedIndexer Methods index :: Timed (Point event) (Maybe event) -> MixedIndexer store mem event -> m (MixedIndexer store mem event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> MixedIndexer store mem event -> m (MixedIndexer store mem event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> MixedIndexer store mem event -> m (MixedIndexer store mem event) # rollback :: Point event -> MixedIndexer store mem event -> m (MixedIndexer store mem event) # setLastStablePoint :: Point event -> MixedIndexer store mem event -> m (MixedIndexer store mem event) # | |
IsIndex m event indexer => IsIndex m event (IndexTransformer config indexer) # | |
Defined in Marconi.Core.Transformer.IndexTransformer Methods index :: Timed (Point event) (Maybe event) -> IndexTransformer config indexer event -> m (IndexTransformer config indexer event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> IndexTransformer config indexer event -> m (IndexTransformer config indexer event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> IndexTransformer config indexer event -> m (IndexTransformer config indexer event) # rollback :: Point event -> IndexTransformer config indexer event -> m (IndexTransformer config indexer event) # setLastStablePoint :: Point event -> IndexTransformer config indexer event -> m (IndexTransformer config indexer event) # | |
(Applicative m, IsIndex m event index, Queryable m event query index) => IsIndex m event (WithCache query index) # | This instances update all the cached queries with the incoming event and then pass this event to the underlying indexer. |
Defined in Marconi.Core.Transformer.WithCache Methods index :: Timed (Point event) (Maybe event) -> WithCache query index event -> m (WithCache query index event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithCache query index event -> m (WithCache query index event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithCache query index event -> m (WithCache query index event) # rollback :: Point event -> WithCache query index event -> m (WithCache query index event) # setLastStablePoint :: Point event -> WithCache query index event -> m (WithCache query index event) # | |
(MonadIO m, MonadError IndexerError m, IsIndex m event index) => IsIndex m event (WithTrace m index) # | |
Defined in Marconi.Core.Transformer.WithTracer Methods index :: Timed (Point event) (Maybe event) -> WithTrace m index event -> m (WithTrace m index event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithTrace m index event -> m (WithTrace m index event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithTrace m index event -> m (WithTrace m index event) # rollback :: Point event -> WithTrace m index event -> m (WithTrace m index event) # setLastStablePoint :: Point event -> WithTrace m index event -> m (WithTrace m index event) # | |
(Applicative m, IsIndex m event index) => IsIndex m event (WithTracer m index) # | |
Defined in Marconi.Core.Transformer.WithTracer Methods index :: Timed (Point event) (Maybe event) -> WithTracer m index event -> m (WithTracer m index event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithTracer m index event -> m (WithTracer m index event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithTracer m index event -> m (WithTracer m index event) # rollback :: Point event -> WithTracer m index event -> m (WithTracer m index event) # setLastStablePoint :: Point event -> WithTracer m index event -> m (WithTracer m index event) # | |
(Point output ~ Point input, IsIndex m output indexer, Ord (Point output)) => IsIndex m input (WithTransform indexer output) # | |
Defined in Marconi.Core.Transformer.WithTransform Methods index :: Timed (Point input) (Maybe input) -> WithTransform indexer output input -> m (WithTransform indexer output input) # indexAll :: (Eq (Point input), Traversable f) => f (Timed (Point input) (Maybe input)) -> WithTransform indexer output input -> m (WithTransform indexer output input) # indexAllDescending :: (Eq (Point input), Traversable f) => f (Timed (Point input) (Maybe input)) -> WithTransform indexer output input -> m (WithTransform indexer output input) # rollback :: Point input -> WithTransform indexer output input -> m (WithTransform indexer output input) # setLastStablePoint :: Point input -> WithTransform indexer output input -> m (WithTransform indexer output input) # | |
(HasGenesis (Point output), Point input ~ Point output, IsSync m output indexer, IsIndex m output indexer, Ord (Point output)) => IsIndex m input (WithFold m indexer output) # | |
Defined in Marconi.Core.Transformer.WithFold Methods index :: Timed (Point input) (Maybe input) -> WithFold m indexer output input -> m (WithFold m indexer output input) # indexAll :: (Eq (Point input), Traversable f) => f (Timed (Point input) (Maybe input)) -> WithFold m indexer output input -> m (WithFold m indexer output input) # indexAllDescending :: (Eq (Point input), Traversable f) => f (Timed (Point input) (Maybe input)) -> WithFold m indexer output input -> m (WithFold m indexer output input) # rollback :: Point input -> WithFold m indexer output input -> m (WithFold m indexer output input) # setLastStablePoint :: Point input -> WithFold m indexer output input -> m (WithFold m indexer output input) # | |
(MonadTrans t, MonadIO m, MonadIO (t m), MonadError IndexerError (t m), IsIndex (t m) event index) => IsIndex (t m) event (WithTrace m index) # | |
Defined in Marconi.Core.Transformer.WithTracer Methods index :: Timed (Point event) (Maybe event) -> WithTrace m index event -> t m (WithTrace m index event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithTrace m index event -> t m (WithTrace m index event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithTrace m index event -> t m (WithTrace m index event) # rollback :: Point event -> WithTrace m index event -> t m (WithTrace m index event) # setLastStablePoint :: Point event -> WithTrace m index event -> t m (WithTrace m index event) # | |
(MonadTrans t, Monad m, Monad (t m), IsIndex (t m) event index) => IsIndex (t m) event (WithTracer m index) # | |
Defined in Marconi.Core.Transformer.WithTracer Methods index :: Timed (Point event) (Maybe event) -> WithTracer m index event -> t m (WithTracer m index event) # indexAll :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithTracer m index event -> t m (WithTracer m index event) # indexAllDescending :: (Eq (Point event), Traversable f) => f (Timed (Point event) (Maybe event)) -> WithTracer m index event -> t m (WithTracer m index event) # rollback :: Point event -> WithTracer m index event -> t m (WithTracer m index event) # setLastStablePoint :: Point event -> WithTracer m index event -> t m (WithTracer m index event) # |
Arguments
:: IsIndex m event indexer | |
=> (Timed (Point event) event -> indexer event -> m (indexer event)) | the function that adds the event |
-> (Point event -> indexer event -> m (indexer event)) | the function that update the last point, called in any case |
-> Timed (Point event) (Maybe event) | |
-> indexer event | |
-> m (indexer event) |
If the event is Nothing
, just updat the last sync event.
Otherwise, store the event and update the last sync event.
indexEither :: (IsIndex (ExceptT err m) event indexer, Eq (Point event)) => Timed (Point event) (Maybe event) -> indexer event -> m (Either err (indexer event)) #
Like index
, but internalise its error in the result.
It's useful when you don't want to internalise the error in the monad stack to handle it explicitly,
it's often used when we target IO as we don't want to mess with IOException
.
indexAllEither :: (IsIndex (ExceptT err m) event indexer, Traversable f, Ord (Point event)) => f (Timed (Point event) (Maybe event)) -> indexer event -> m (Either err (indexer event)) #
Like indexAll
, but internalise the error in the result.
indexAllDescendingEither :: (IsIndex (ExceptT err m) event indexer, Traversable f, Ord (Point event)) => f (Timed (Point event) (Maybe event)) -> indexer event -> m (Either err (indexer event)) #
Like indexAllDescending
, but internalise the error in the result.
class HasGenesis (Point event) => Resetable m event indexer where #
We can reset an indexer, clearing all its content
indexer
is the indexer implementation typeevent
the indexer eventsm
the monad in which our indexer operates
Instances
(HasGenesis (Point event), Applicative m) => Resetable m event ListIndexer # | |
Defined in Marconi.Core.Indexer.ListIndexer Methods reset :: ListIndexer event -> m (ListIndexer event) # | |
(Applicative m, Resetable m event indexer) => Resetable m event (WithCatchup indexer) # | |
Defined in Marconi.Core.Transformer.WithCatchup Methods reset :: WithCatchup indexer event -> m (WithCatchup indexer event) # | |
(Applicative m, Resetable m event indexer) => Resetable m event (WithDelay indexer) # | |
Defined in Marconi.Core.Transformer.WithDelay | |
(Monad m, Prunable m event indexer, Resetable m event indexer, HasGenesis (Point event), Ord (Point event)) => Resetable m event (WithPruning indexer) # | |
Defined in Marconi.Core.Transformer.WithPruning Methods reset :: WithPruning indexer event -> m (WithPruning indexer event) # | |
(Monad m, Resetable m event index, HasGenesis (Point event), Ord (Point event), Queryable m event query index) => Resetable m event (WithCache query index) # | Rollback the underlying indexer, clear the cache, repopulate it with queries to the underlying indexer. |
Defined in Marconi.Core.Transformer.WithCache | |
(HasGenesis (Point event), Functor m, Resetable m event indexer) => Resetable m event (WithTrace m indexer) # | |
Defined in Marconi.Core.Transformer.WithTracer | |
(HasGenesis (Point event), Functor m, Resetable m event indexer) => Resetable m event (WithTracer m indexer) # | |
Defined in Marconi.Core.Transformer.WithTracer Methods reset :: WithTracer m indexer event -> m (WithTracer m indexer event) # | |
(Functor m, Resetable m output indexer, HasGenesis (Point event)) => Resetable m event (WithTransform indexer output) # | |
Defined in Marconi.Core.Transformer.WithTransform Methods reset :: WithTransform indexer output event -> m (WithTransform indexer output event) # | |
(Functor m, Resetable m output indexer, HasGenesis (Point event)) => Resetable m event (WithFold m indexer output) # | |
Defined in Marconi.Core.Transformer.WithFold | |
(MonadTrans t, Monad m, Monad (t m), HasGenesis (Point event), Resetable (t m) event indexer) => Resetable (t m) event (WithTrace m indexer) # | |
Defined in Marconi.Core.Transformer.WithTracer | |
(MonadTrans t, Monad m, Monad (t m), HasGenesis (Point event), Resetable (t m) event indexer) => Resetable (t m) event (WithTracer m indexer) # | |
Defined in Marconi.Core.Transformer.WithTracer Methods reset :: WithTracer m indexer event -> t m (WithTracer m indexer event) # |
class Queryable m event query indexer where #
The indexer can answer a Query to produce the corresponding result of that query.
indexer
is the indexer implementation typeevent
the indexer eventsquery
the type of query we want to answerm
the monad in which our indexer operates
Minimal complete definition
Methods
query :: Ord (Point event) => Point event -> query -> indexer event -> m (Result query) #
Query an indexer at a given point in time It can be read as: "With the knowledge you have at that point in time, what is your answer to this query?"
queryLatest :: (IsSync m event indexer, Monad m, Ord (Point event)) => query -> indexer event -> m (Result query) #
Like query
, but use the latest point of the indexer instead of a provided one
Instances
Queryable m event query indexer => Queryable m event query (WithAction indexer) # | |
Defined in Marconi.Core.Transformer.WithAction Methods query :: Point event -> query -> WithAction indexer event -> m (Result query) # queryLatest :: query -> WithAction indexer event -> m (Result query) # | |
Queryable m event query indexer => Queryable m event query (WithCatchup indexer) # | |
Defined in Marconi.Core.Transformer.WithCatchup Methods query :: Point event -> query -> WithCatchup indexer event -> m (Result query) # queryLatest :: query -> WithCatchup indexer event -> m (Result query) # | |
Queryable m event query indexer => Queryable m event query (WithDelay indexer) # | |
Defined in Marconi.Core.Transformer.WithDelay | |
Queryable m event query indexer => Queryable m event query (WithPruning indexer) # | |
Defined in Marconi.Core.Transformer.WithPruning Methods query :: Point event -> query -> WithPruning indexer event -> m (Result query) # queryLatest :: query -> WithPruning indexer event -> m (Result query) # | |
(AppendResult m event query ListIndexer, Queryable m event query store) => Queryable m event query (MixedIndexer store ListIndexer) # | |
Defined in Marconi.Core.Indexer.MixedIndexer Methods query :: Point event -> query -> MixedIndexer store ListIndexer event -> m (Result query) # queryLatest :: query -> MixedIndexer store ListIndexer event -> m (Result query) # | |
Queryable m event query indexer => Queryable m event query (IndexTransformer config indexer) # | |
Defined in Marconi.Core.Transformer.IndexTransformer Methods query :: Point event -> query -> IndexTransformer config indexer event -> m (Result query) # queryLatest :: query -> IndexTransformer config indexer event -> m (Result query) # | |
(Ord query, Ord (Point event), IsSync m event index, MonadError (QueryError query) m, Monad m, Queryable m event query index) => Queryable m event query (WithCache query index) # | |
Defined in Marconi.Core.Transformer.WithCache | |
(Queryable m event query indexer, MonadIO m, MonadError (QueryError e) m) => Queryable m event query (WithTrace IO indexer) # | |
Queryable m event query indexer => Queryable m event query (WithTracer n indexer) # | |
Defined in Marconi.Core.Transformer.WithTracer Methods query :: Point event -> query -> WithTracer n indexer event -> m (Result query) # queryLatest :: query -> WithTracer n indexer event -> m (Result query) # | |
(Queryable m output query indexer, Point output ~ Point input) => Queryable m input query (WithTransform indexer output) # | |
Defined in Marconi.Core.Transformer.WithTransform Methods query :: Point input -> query -> WithTransform indexer output input -> m (Result query) # queryLatest :: query -> WithTransform indexer output input -> m (Result query) # | |
(Queryable m output query indexer, Point input ~ Point output) => Queryable m input query (WithFold n indexer output) # | |
Defined in Marconi.Core.Transformer.WithFold | |
(MonadIO m, MonadError (QueryError (GetLastQuery event)) m) => Queryable m event (GetLastQuery event) LastEventIndexer # | |
Defined in Marconi.Core.Indexer.LastEventIndexer Methods query :: Point event -> GetLastQuery event -> LastEventIndexer event -> m (Result (GetLastQuery event)) # queryLatest :: GetLastQuery event -> LastEventIndexer event -> m (Result (GetLastQuery event)) # | |
MonadError (QueryError (EventAtQuery event)) m => Queryable m event (EventAtQuery event) ListIndexer # | |
Defined in Marconi.Core.Query Methods query :: Point event -> EventAtQuery event -> ListIndexer event -> m (Result (EventAtQuery event)) # queryLatest :: EventAtQuery event -> ListIndexer event -> m (Result (EventAtQuery event)) # | |
MonadError (QueryError (EventsFromQuery event)) m => Queryable m event (EventsFromQuery event) ListIndexer # | |
Defined in Marconi.Core.Query Methods query :: Point event -> EventsFromQuery event -> ListIndexer event -> m (Result (EventsFromQuery event)) # queryLatest :: EventsFromQuery event -> ListIndexer event -> m (Result (EventsFromQuery event)) # | |
MonadError (QueryError (EventsMatchingQuery event)) m => Queryable m event (EventsMatchingQuery event) ListIndexer # | |
Defined in Marconi.Core.Query Methods query :: Point event -> EventsMatchingQuery event -> ListIndexer event -> m (Result (EventsMatchingQuery event)) # queryLatest :: EventsMatchingQuery event -> ListIndexer event -> m (Result (EventsMatchingQuery event)) # | |
MonadError (QueryError (LatestEventsQuery event)) m => Queryable m event (LatestEventsQuery event) ListIndexer # | |
Defined in Marconi.Core.Query Methods query :: Point event -> LatestEventsQuery event -> ListIndexer event -> m (Result (LatestEventsQuery event)) # queryLatest :: LatestEventsQuery event -> ListIndexer event -> m (Result (LatestEventsQuery event)) # | |
(MonadIO m, MonadError (QueryError (EventAtQuery event)) m) => Queryable m event (EventAtQuery event) (FileIndexer meta) # | |
Defined in Marconi.Core.Query Methods query :: Point event -> EventAtQuery event -> FileIndexer meta event -> m (Result (EventAtQuery event)) # queryLatest :: EventAtQuery event -> FileIndexer meta event -> m (Result (EventAtQuery event)) # | |
(MonadIO m, MonadError (QueryError (EventsFromQuery event)) m) => Queryable m event (EventsFromQuery event) (FileIndexer meta) # | |
Defined in Marconi.Core.Query Methods query :: Point event -> EventsFromQuery event -> FileIndexer meta event -> m (Result (EventsFromQuery event)) # queryLatest :: EventsFromQuery event -> FileIndexer meta event -> m (Result (EventsFromQuery event)) # | |
(MonadIO m, MonadError (QueryError (LatestEventsQuery event)) m) => Queryable m event (LatestEventsQuery event) (FileIndexer meta) # | |
Defined in Marconi.Core.Query Methods query :: Point event -> LatestEventsQuery event -> FileIndexer meta event -> m (Result (LatestEventsQuery event)) # queryLatest :: LatestEventsQuery event -> FileIndexer meta event -> m (Result (LatestEventsQuery event)) # |
queryEither :: Queryable (ExceptT (QueryError query) m) event query indexer => Ord (Point event) => Point event -> query -> indexer event -> m (Either (QueryError query) (Result query)) #
Like 'queryEither, but internalise QueryError
in the result.
queryLatestEither :: Queryable (ExceptT (QueryError query) m) event query indexer => IsSync m event indexer => Monad m => Ord (Point event) => query -> indexer event -> m (Either (QueryError query) (Result query)) #
Like queryEither
, but use the latest point of the indexer instead of a provided one
class AppendResult m event query indexer where #
The indexer can take a result and complete it with its events
Methods
appendResult :: Ord (Point event) => Point event -> query -> indexer event -> m (Result query) -> m (Result query) #
Instances
MonadError (QueryError (EventAtQuery event)) m => AppendResult m event (EventAtQuery event) ListIndexer # | |
Defined in Marconi.Core.Query Methods appendResult :: Point event -> EventAtQuery event -> ListIndexer event -> m (Result (EventAtQuery event)) -> m (Result (EventAtQuery event)) # | |
MonadError (QueryError (EventsFromQuery event)) m => AppendResult m event (EventsFromQuery event) ListIndexer # | |
Defined in Marconi.Core.Query Methods appendResult :: Point event -> EventsFromQuery event -> ListIndexer event -> m (Result (EventsFromQuery event)) -> m (Result (EventsFromQuery event)) # | |
MonadError (QueryError (EventsMatchingQuery event)) m => AppendResult m event (EventsMatchingQuery event) ListIndexer # | |
Defined in Marconi.Core.Query Methods appendResult :: Point event -> EventsMatchingQuery event -> ListIndexer event -> m (Result (EventsMatchingQuery event)) -> m (Result (EventsMatchingQuery event)) # |
class Closeable m indexer where #
We know how to close an indexer
Instances
class Functor m => IsSync m event indexer where #
We know how far an indexer went in the indexation of events.
Methods
lastStablePoint :: indexer event -> m (Point event) #
Get the latest stable point known by the indexer
lastSyncPoint :: indexer event -> m (Point event) #
Last sync point of the indexer.