marconi-core-1.2.0.0: Modular indexing for rewindable ledger
Safe HaskellSafe-Inferred
LanguageHaskell2010

Marconi.Core.Transformer.WithPruning

Description

A transformer that prune the content of an indexer

See Marconi.Core for documentation.

Synopsis

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 type
  • desc the descriptor of the indexer, fixing the Point types
  • m 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

Instances details
(IndexerTrans t, Functor m, Prunable m event indexer) => Prunable m event (t indexer) # 
Instance details

Defined in Marconi.Core.Transformer.WithPruning

Methods

prune :: Point event -> t indexer event -> m (t indexer event) #

pruningPoint :: t indexer event -> m (Maybe (Point event)) #

(Functor m, Prunable m event store) => Prunable m event (MixedIndexer store mem) # 
Instance details

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) # 
Instance details

Defined in Marconi.Core.Transformer.WithPruning

Methods

prune :: Point output -> t indexer output output -> m (t indexer output output) #

pruningPoint :: t indexer output output -> m (Maybe (Point output)) #

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

Instances details
IndexerTrans WithPruning # 
Instance details

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) # 
Instance details

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) # 
Instance details

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) # 
Instance details

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) # 
Instance details

Defined in Marconi.Core.Transformer.WithPruning

Methods

reset :: WithPruning indexer event -> m (WithPruning indexer event) #

Closeable m indexer => Closeable m (WithPruning indexer) # 
Instance details

Defined in Marconi.Core.Transformer.WithPruning

Methods

close :: WithPruning indexer event -> m () #

HasPruningConfig (WithPruning indexer) # 
Instance details

Defined in Marconi.Core.Transformer.WithPruning

Methods

securityParam :: Lens' (WithPruning indexer event) Word #

pruneEvery :: Lens' (WithPruning indexer event) Word #

withPruning #

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 #

Methods

securityParam :: Lens' (indexer event) Word #

pruneEvery :: Lens' (indexer event) Word #

Instances

Instances details
HasPruningConfig (WithPruning indexer) # 
Instance details

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) # 
Instance details

Defined in Marconi.Core.Transformer.WithPruning

Methods

securityParam :: Lens' (t indexer event) Word #

pruneEvery :: Lens' (t indexer event) Word #