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