Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Marconi.Core.Transformer.IndexTransformer
Description
A base datatype to alter the behaviour of an indexer.
See Marconi.Core for documentation.
Synopsis
- data IndexTransformer config indexer event = IndexTransformer (config event) (indexer event)
- 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
- resetVia :: (Functor m, Resetable m event indexer) => Lens' s (indexer event) -> s -> m s
- indexVia :: (IsIndex m event indexer, Eq (Point event)) => Lens' s (indexer event) -> Timed (Point event) (Maybe event) -> s -> m s
- indexAllDescendingVia :: (Eq (Point event), IsIndex m event indexer, Traversable f) => Lens' s (indexer event) -> f (Timed (Point event) (Maybe event)) -> s -> m s
- indexAllVia :: (Eq (Point event), IsIndex m event indexer, Traversable f) => Lens' s (indexer event) -> f (Timed (Point event) (Maybe event)) -> s -> m s
- setLastStablePointVia :: (Ord (Point event), IsIndex m event indexer) => Lens' s (indexer event) -> Point event -> s -> m s
- lastSyncPointVia :: IsSync m event indexer => Getter s (indexer event) -> s -> m (Point event)
- lastStablePointVia :: IsSync m event indexer => Getter s (indexer event) -> s -> m (Point event)
- closeVia :: Closeable m indexer => Getter s (indexer event) -> s -> m ()
- getDatabasePathVia :: HasDatabasePath indexer => Getter s (indexer event) -> s -> SQLiteDBLocation
- queryVia :: (Queryable m event query indexer, Ord (Point event)) => Getter s (indexer event) -> Point event -> query -> s -> m (Result query)
- queryLatestVia :: (Queryable m event query indexer, Monad m, Ord (Point event), IsSync m event indexer) => Getter s (indexer event) -> query -> s -> m (Result query)
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
Queryable m event query indexer => Queryable m event query (IndexTransformer config indexer) # | |
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) # | |
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) # | |
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) # | |
Defined in Marconi.Core.Transformer.IndexTransformer Methods close :: IndexTransformer config index event -> m () # | |
IndexerTrans (IndexTransformer config) # | |
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) # | |
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.