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

Marconi.Core.Transformer.IndexTransformer

Description

A base datatype to alter the behaviour of an indexer.

See Marconi.Core for documentation.

Synopsis

Documentation

data IndexTransformer config indexer event #

This datatype is meant to be use inside a new type by any indexer transformer. It wraps an indexer and attach to it a "config" (which may be stateful) used in the logic added by the transformer

Constructors

IndexTransformer (config event) (indexer event) 

Instances

Instances details
Queryable m event query indexer => Queryable m event query (IndexTransformer config indexer) # 
Instance details

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

IsIndex m event indexer => IsIndex m event (IndexTransformer config indexer) # 
Instance details

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

IsSync event m index => IsSync event m (IndexTransformer config index) # 
Instance details

Defined in Marconi.Core.Transformer.IndexTransformer

Methods

lastStablePoint :: IndexTransformer config index m -> event (Point m) #

lastSyncPoint :: IndexTransformer config index m -> event (Point m) #

Closeable m index => Closeable m (IndexTransformer config index) # 
Instance details

Defined in Marconi.Core.Transformer.IndexTransformer

Methods

close :: IndexTransformer config index event -> m () #

IndexerTrans (IndexTransformer config) # 
Instance details

Defined in Marconi.Core.Transformer.IndexTransformer

Methods

unwrap :: forall (indexer :: Type -> Type) event. Lens' (IndexTransformer config indexer event) (indexer event) #

HasDatabasePath index => HasDatabasePath (IndexTransformer config index) # 
Instance details

Defined in Marconi.Core.Transformer.IndexTransformer

Methods

getDatabasePath :: IndexTransformer config index event -> SQLiteDBLocation #

wrapperConfig :: forall config indexer event config. Lens (IndexTransformer config indexer event) (IndexTransformer config indexer event) (config event) (config event) #

wrappedIndexer :: forall config indexer event indexer. Lens (IndexTransformer config indexer event) (IndexTransformer config indexer event) (indexer event) (indexer event) #

rollbackVia :: (IsIndex m event indexer, Ord (Point event)) => Lens' s (indexer event) -> Point event -> s -> m s #

Helper to implement the rollback functon of rollback when we use a wrapper. Unfortunately, as m must have a functor instance, we can't use deriving via directly.

resetVia :: (Functor m, Resetable m event indexer) => Lens' s (indexer event) -> s -> m s #

Helper to implement the reset functon of Resetable when we use a wrapper. Unfortunately, as m must have a functor instance, we can't use deriving via directly.

indexVia :: (IsIndex m event indexer, Eq (Point event)) => Lens' s (indexer event) -> Timed (Point event) (Maybe event) -> s -> m s #

Helper to implement the index functon of IsIndex when we use a wrapper. If you don't want to perform any other side logic, use deriving via instead.

indexAllDescendingVia :: (Eq (Point event), IsIndex m event indexer, Traversable f) => Lens' s (indexer event) -> f (Timed (Point event) (Maybe event)) -> s -> m s #

Helper to implement the index functon of IsIndex when we use a wrapper. If you don't want to perform any other side logic, use deriving via instead.

indexAllVia :: (Eq (Point event), IsIndex m event indexer, Traversable f) => Lens' s (indexer event) -> f (Timed (Point event) (Maybe event)) -> s -> m s #

Helper to implement the index functon of IsIndex when we use a wrapper. If you don't want to perform any other side logic, use deriving via instead.

setLastStablePointVia :: (Ord (Point event), IsIndex m event indexer) => Lens' s (indexer event) -> Point event -> s -> m s #

Helper to implement the index functon of IsIndex when we use a wrapper. If you don't want to perform any other side logic, use deriving via instead.

lastSyncPointVia :: IsSync m event indexer => Getter s (indexer event) -> s -> m (Point event) #

Helper to implement the lastSyncPoint functon of IsSync when we use a wrapper. If you don't want to perform any other side logic, use deriving via instead.

lastStablePointVia :: IsSync m event indexer => Getter s (indexer event) -> s -> m (Point event) #

Helper to implement the lastSyncPoint functon of IsSync when we use a wrapper. If you don't want to perform any other side logic, use deriving via instead.

closeVia :: Closeable m indexer => Getter s (indexer event) -> s -> m () #

Helper to implement the close functon of Closeable when we use a wrapper. If you don't want to perform any other side logic, use deriving via instead.

getDatabasePathVia :: HasDatabasePath indexer => Getter s (indexer event) -> s -> SQLiteDBLocation #

Helper to implement the close functon of Closeable when we use a wrapper. If you don't want to perform any other side logic, use deriving via instead.

queryVia :: (Queryable m event query indexer, Ord (Point event)) => Getter s (indexer event) -> Point event -> query -> s -> m (Result query) #

Helper to implement the query functon of Queryable when we use a wrapper. If you don't want to perform any other side logic, use deriving via instead.

queryLatestVia :: (Queryable m event query indexer, Monad m, Ord (Point event), IsSync m event indexer) => Getter s (indexer event) -> query -> s -> m (Result query) #

Helper to implement the query functon of Queryable when we use a wrapper. If you don't want to perform any other side logic, use deriving via instead.