Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Marconi.Core.Transformer.WithPruning
Description
A transformer that prune the content of an indexer
See Marconi.Core for documentation.
Synopsis
- class Prunable m event indexer where
- pruneVia :: (Functor m, Prunable m event indexer, Ord (Point event)) => Lens' s (indexer event) -> Point event -> s -> m s
- pruningPointVia :: Prunable m event indexer => Getter s (indexer event) -> s -> m (Maybe (Point event))
- data WithPruning indexer event
- withPruning :: Word -> Word -> indexer event -> WithPruning indexer event
- nextPruning :: Lens' (WithPruning indexer event) (Seq (Point event))
- stepsBeforeNext :: Lens' (WithPruning indexer event) Word
- currentDepth :: Lens' (WithPruning indexer event) Word
- class HasPruningConfig indexer where
- securityParam :: Lens' (indexer event) Word
- pruneEvery :: Lens' (indexer event) Word
Documentation
class Prunable m event indexer where #
The indexer can prune old data.
The main purpose is to speed up query processing.
If the indexer is Rollbackable
and Prunable
,
it can't rollback
behind the pruningPoint
,
the idea is to call prune
on points that can't be rollbacked anymore.
indexer
is the indexer implementation typedesc
the descriptor of the indexer, fixing thePoint
typesm
the monad in which our indexer operates
Methods
prune :: Ord (Point event) => Point event -> indexer event -> m (indexer event) #
pruningPoint :: indexer event -> m (Maybe (Point event)) #
Instances
(IndexerTrans t, Functor m, Prunable m event indexer) => Prunable m event (t indexer) # | |
Defined in Marconi.Core.Transformer.WithPruning | |
(Functor m, Prunable m event store) => Prunable m event (MixedIndexer store mem) # | |
Defined in Marconi.Core.Transformer.WithPruning Methods prune :: Point event -> MixedIndexer store mem event -> m (MixedIndexer store mem event) # pruningPoint :: MixedIndexer store mem event -> m (Maybe (Point event)) # | |
(IndexerMapTrans t, Functor m, Prunable m output indexer) => Prunable m output (t indexer output) # | |
Defined in Marconi.Core.Transformer.WithPruning |
pruneVia :: (Functor m, Prunable m event indexer, Ord (Point event)) => Lens' s (indexer event) -> Point event -> s -> m s #
Helper to implement the prune
functon of Prunable
when we use a wrapper.
Unfortunately, as m
must have a functor instance, we can't use deriving via
directly.
pruningPointVia :: Prunable m event indexer => Getter s (indexer event) -> s -> m (Maybe (Point event)) #
Helper to implement the pruningPoint
functon of Prunable
when we use a wrapper.
Unfortunately, as m
must have a functor instance, we can't use deriving via
directly.
data WithPruning indexer event #
WithPruning control when we should prune an indexer
The main purpose is to optimize storage for events that can't be rollbacked anymore.
In some contexts, once you know that an event can't be rollback anymore,
your indexer may not need it, or may process it's information to make it
irrelevant.
In this case, you may want to prune
the stored events.
Instances
IndexerTrans WithPruning # | |
Defined in Marconi.Core.Transformer.WithPruning Methods unwrap :: forall (indexer :: Type -> Type) event. Lens' (WithPruning indexer event) (indexer event) # | |
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) # | |
(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) # | |
IsSync m event indexer => IsSync m event (WithPruning indexer) # | |
Defined in Marconi.Core.Transformer.WithPruning Methods lastStablePoint :: WithPruning indexer event -> m (Point event) # lastSyncPoint :: WithPruning indexer event -> m (Point event) # | |
(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) # | |
Closeable m indexer => Closeable m (WithPruning indexer) # | |
Defined in Marconi.Core.Transformer.WithPruning Methods close :: WithPruning indexer event -> m () # | |
HasPruningConfig (WithPruning indexer) # | |
Defined in Marconi.Core.Transformer.WithPruning Methods securityParam :: Lens' (WithPruning indexer event) Word # pruneEvery :: Lens' (WithPruning indexer event) Word # |
Arguments
:: Word | how far can a rollback go |
-> Word | once we have enough events, how often do we prune |
-> indexer event | |
-> WithPruning indexer event |
nextPruning :: Lens' (WithPruning indexer event) (Seq (Point event)) #
stepsBeforeNext :: Lens' (WithPruning indexer event) Word #
currentDepth :: Lens' (WithPruning indexer event) Word #
class HasPruningConfig indexer where #
Instances
HasPruningConfig (WithPruning indexer) # | |
Defined in Marconi.Core.Transformer.WithPruning Methods securityParam :: Lens' (WithPruning indexer event) Word # pruneEvery :: Lens' (WithPruning indexer event) Word # | |
(IndexerTrans t, HasPruningConfig indexer) => HasPruningConfig (t indexer) # | |
Defined in Marconi.Core.Transformer.WithPruning |