Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Marconi.Core.Transformer.WithCache
Description
A transformer that cache result of some queries
See Marconi.Core for documentation.
Synopsis
- data WithCache query indexer event
- withCache :: Ord query => (Timed (Point event) (Maybe event) -> Result query -> Result query) -> indexer event -> WithCache query indexer event
- addCacheFor :: forall query m event indexer. Queryable (ExceptT (QueryError query) m) event query indexer => IsSync (ExceptT (QueryError query) m) event indexer => HasCacheConfig query indexer => Monad m => MonadError IndexerError m => Ord query => Ord (Point event) => query -> indexer event -> m (indexer event)
- class HasCacheConfig query indexer where
Documentation
data WithCache query indexer event #
Setup a cache for some requests.
The cache is active only for the latest Point
.
As a consequence, using WithCache
is more effective on top of the on-disk
part of a MixedIndexer
, or any other part of an indexer that has a relatively
stable sync point.
Instances
(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 | |
(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) # | |
IsSync m event indexer => IsSync m event (WithCache query indexer) # | |
Defined in Marconi.Core.Transformer.WithCache Methods lastStablePoint :: WithCache query indexer event -> m (Point event) # lastSyncPoint :: WithCache query indexer event -> m (Point 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 | |
Closeable m indexer => Closeable m (WithCache query indexer) # | |
Defined in Marconi.Core.Transformer.WithCache | |
HasCacheConfig query (WithCache query indexer) # | |
Defined in Marconi.Core.Transformer.WithCache | |
IndexerTrans (WithCache query) # | |
HasDatabasePath indexer => HasDatabasePath (WithCache query indexer) # | |
Defined in Marconi.Core.Transformer.WithCache Methods getDatabasePath :: WithCache query indexer event -> SQLiteDBLocation # |
Arguments
:: Ord query | |
=> (Timed (Point event) (Maybe event) -> Result query -> Result query) | The cache update function |
-> indexer event | |
-> WithCache query indexer event |
A smart constructor for WithCache
.
The cache starts empty, you can populate it with addCacheFor
addCacheFor :: forall query m event indexer. Queryable (ExceptT (QueryError query) m) event query indexer => IsSync (ExceptT (QueryError query) m) event indexer => HasCacheConfig query indexer => Monad m => MonadError IndexerError m => Ord query => Ord (Point event) => query -> indexer event -> m (indexer event) #
Add a cache for a specific query.
When added, the WithCache
queries the underlying indexer to populate the cache for this query.
If you want to add several indexers at the same time, use traverse
.
class HasCacheConfig query indexer where #
Instances
(IndexerTrans t, HasCacheConfig query indexer) => HasCacheConfig query (t indexer) # | |
Defined in Marconi.Core.Transformer.WithCache | |
HasCacheConfig query (WithCache query indexer) # | |
Defined in Marconi.Core.Transformer.WithCache | |
(IndexerMapTrans t, HasCacheConfig query indexer) => HasCacheConfig query (t indexer output) # | |
Defined in Marconi.Core.Transformer.WithCache |