Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Marconi.Core.Query
Description
A set of queries that can be implemented by any indexer
See Marconi.Core for documentation.
Synopsis
- data EventAtQuery event = EventAtQuery
- newtype EventsMatchingQuery event = EventsMatchingQuery (event -> Maybe event)
- allEvents :: EventsMatchingQuery event
- newtype LatestEventsQuery event = LatestEventsQuery Word
- latestEvent :: LatestEventsQuery event
- newtype EventsFromQuery event = EventsFromQuery (Point event)
- data Stability a
- isStable :: Stability a -> Bool
- calcStability :: Ord point => (event -> point) -> point -> event -> Stability event
- newtype WithStability query = WithStability {
- unWithStability :: query
- withStabilityM :: (Result query ~ f event, Result (WithStability query) ~ f (Stability event), MonadError (QueryError (WithStability query)) m, Traversable f) => (event -> Stability event) -> ExceptT (QueryError query) m (f event) -> m (f (Stability event))
- withStability :: forall event m indexer f. (Monad m, Ord (Point event), IsSync m event indexer, Traversable f) => indexer event -> f (Timed (Point event) event) -> m (f (Stability (Timed (Point event) event)))
- withStabilityAt :: forall result m event indexer f. (Monad m, Ord (Point event), IsSync m event indexer, Applicative f) => indexer event -> Point event -> f result -> m (f (Stability result))
- queryErrorWithStability :: (Result (WithStability query) ~ f (Stability event), Result query ~ f event) => (f event -> f (Stability event)) -> QueryError query -> QueryError (WithStability query)
Documentation
data EventAtQuery event #
Get the event stored by the indexer at a given point in time
Constructors
EventAtQuery |
Instances
newtype EventsMatchingQuery event #
Query an indexer to find all events that match a given predicate
The result should return the most recent first
Constructors
EventsMatchingQuery (event -> Maybe event) |
Instances
MonadError (QueryError (EventsMatchingQuery event)) m => AppendResult m event (EventsMatchingQuery event) ListIndexer # | |
Defined in Marconi.Core.Query Methods appendResult :: Point event -> EventsMatchingQuery event -> ListIndexer event -> m (Result (EventsMatchingQuery event)) -> m (Result (EventsMatchingQuery event)) # | |
MonadError (QueryError (EventsMatchingQuery event)) m => Queryable m event (EventsMatchingQuery event) ListIndexer # | |
Defined in Marconi.Core.Query Methods query :: Point event -> EventsMatchingQuery event -> ListIndexer event -> m (Result (EventsMatchingQuery event)) # queryLatest :: EventsMatchingQuery event -> ListIndexer event -> m (Result (EventsMatchingQuery event)) # | |
type Result (EventsMatchingQuery event) # | The result of an |
Defined in Marconi.Core.Query | |
type Result (WithStability (EventsMatchingQuery event)) # | |
Defined in Marconi.Core.Query |
allEvents :: EventsMatchingQuery event #
Get all the events that are stored in the indexer
newtype LatestEventsQuery event #
Get the nbOfEvents
last non empty events from the indexer before the point given in the query
Constructors
LatestEventsQuery Word |
Instances
MonadError (QueryError (LatestEventsQuery event)) m => Queryable m event (LatestEventsQuery event) ListIndexer # | |
Defined in Marconi.Core.Query Methods query :: Point event -> LatestEventsQuery event -> ListIndexer event -> m (Result (LatestEventsQuery event)) # queryLatest :: LatestEventsQuery event -> ListIndexer event -> m (Result (LatestEventsQuery event)) # | |
(MonadIO m, MonadError (QueryError (LatestEventsQuery event)) m) => Queryable m event (LatestEventsQuery event) (FileIndexer meta) # | |
Defined in Marconi.Core.Query Methods query :: Point event -> LatestEventsQuery event -> FileIndexer meta event -> m (Result (LatestEventsQuery event)) # queryLatest :: LatestEventsQuery event -> FileIndexer meta event -> m (Result (LatestEventsQuery event)) # | |
type Result (LatestEventsQuery event) # | |
Defined in Marconi.Core.Query |
latestEvent :: LatestEventsQuery event #
Get the latest non empty event before the point given in the query
newtype EventsFromQuery event #
Get the non empty events from the given point (excluded) to the one of the query (included)
Constructors
EventsFromQuery (Point event) |
Instances
Represents whether an event is considered to stable or not.
Instances
calcStability :: Ord point => (event -> point) -> point -> event -> Stability event #
Helper function to wrap an event in Stability
based on the last stable point and a given way
to get a point.
Asks: Is the provided point less than (from a time before) or equal to (from the time of) the last stable point?
newtype WithStability query #
A wrapper representing the demand that the result of a query
should come with Stability
data
Constructors
WithStability | |
Fields
|
Instances
type Result (WithStability (EventsFromQuery event)) # | |
Defined in Marconi.Core.Query | |
type Result (WithStability (EventsMatchingQuery event)) # | |
Defined in Marconi.Core.Query |
Arguments
:: (Result query ~ f event, Result (WithStability query) ~ f (Stability event), MonadError (QueryError (WithStability query)) m, Traversable f) | |
=> (event -> Stability event) | A function to calculate |
-> ExceptT (QueryError query) m (f event) | In |
-> m (f (Stability event)) |
Arguments
:: forall event m indexer f. (Monad m, Ord (Point event), IsSync m event indexer, Traversable f) | |
=> indexer event | An indexer |
-> f (Timed (Point event) event) | A traversable of query results |
-> m (f (Stability (Timed (Point event) event))) |
Given an indexer and some traversable of timed query results, calculate the stability of all the query results.
Arguments
:: forall result m event indexer f. (Monad m, Ord (Point event), IsSync m event indexer, Applicative f) | |
=> indexer event | An indexer |
-> Point event | A specific point to compare against the last stable point |
-> f result | A traversable of query results |
-> m (f (Stability result)) |
Given an indexer, a Point
and some traversable of query results,
calculate the stability of all the query results.
queryErrorWithStability :: (Result (WithStability query) ~ f (Stability event), Result query ~ f event) => (f event -> f (Stability event)) -> QueryError query -> QueryError (WithStability query) #