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

Marconi.Core.Transformer.WithFold

Description

A transformer that allows an indexer to fold incoming events: each new event is the result of a computation between the last result in the indexer and the incoming event.

See Marconi.Core for documentation.

Synopsis

Documentation

data WithFold m indexer output input #

WithFold fold incoming event to produce an output.

Instances

Instances details
(Queryable m output query indexer, Point input ~ Point output) => Queryable m input query (WithFold n indexer output) # 
Instance details

Defined in Marconi.Core.Transformer.WithFold

Methods

query :: Point input -> query -> WithFold n indexer output input -> m (Result query) #

queryLatest :: query -> WithFold n indexer output input -> m (Result query) #

HasFold m input output (WithFold m indexer output) # 
Instance details

Defined in Marconi.Core.Transformer.WithFold

Methods

fold :: Lens' (WithFold m indexer output input) (output -> input -> m output) #

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

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

(Point output ~ Point event, IsSync m output indexer) => IsSync m event (WithFold m indexer output) # 
Instance details

Defined in Marconi.Core.Transformer.WithFold

Methods

lastStablePoint :: WithFold m indexer output event -> m (Point event) #

lastSyncPoint :: WithFold m indexer output event -> m (Point event) #

(Functor m, Resetable m output indexer, HasGenesis (Point event)) => Resetable m event (WithFold m indexer output) # 
Instance details

Defined in Marconi.Core.Transformer.WithFold

Methods

reset :: WithFold m indexer output event -> m (WithFold m indexer output event) #

Closeable m indexer => Closeable m (WithFold m indexer output) # 
Instance details

Defined in Marconi.Core.Transformer.WithFold

Methods

close :: WithFold m indexer output event -> m () #

IndexerMapTrans (WithFold m) # 
Instance details

Defined in Marconi.Core.Transformer.WithFold

Methods

unwrapMap :: forall (indexer :: Type -> Type) output event. Lens' (WithFold m indexer output event) (indexer output) #

withFold :: output -> (indexer output -> m (Maybe output)) -> (output -> input -> m output) -> indexer output -> WithFold m indexer output input #

A smart constructor for WithFold

withFoldPure :: Applicative m => output -> (indexer output -> m (Maybe output)) -> (output -> input -> output) -> indexer output -> WithFold m indexer output input #

A smart constructor for WithFold

withFoldMap :: (Monoid output, Applicative m) => (indexer output -> m (Maybe output)) -> (input -> output) -> indexer output -> WithFold m indexer output input #

A smart constructor for WithFold

getLastEventAtQueryValue :: (IsSync m event indexer, HasGenesis (Point event), Queryable (ExceptT (QueryError (EventAtQuery a)) m) event (EventAtQuery a) indexer, Ord (Point event), MonadError IndexerError m) => indexer event -> m (Maybe a) #

class HasFold m input output indexer where #

There are few scenarios where you want to modify the fold function but it may happen

Methods

fold :: Lens' (indexer input) (output -> input -> m output) #

Instances

Instances details
HasFold m input output (WithFold m indexer output) # 
Instance details

Defined in Marconi.Core.Transformer.WithFold

Methods

fold :: Lens' (WithFold m indexer output input) (output -> input -> m output) #