| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Eventful.Projection
- data Projection state event = Projection {
- projectionSeed :: state
- projectionEventHandler :: state -> event -> state
- latestProjection :: Foldable t => Projection state event -> t event -> state
- allProjections :: Projection state event -> [event] -> [state]
- getLatestProjection :: Monad m => EventStore serialized m -> Projection proj serialized -> UUID -> m (proj, EventVersion)
Documentation
data Projection state event Source #
A Projection is a piece of state that is constructed only from
events. A Projection is how you reconstruct event sourced state from the
ordered stream of events that constitute that state. The "seed" of a
Projection is the initial state before any events are applied. The event
handler for a projection is the function that actually modifies state based
on the given event.
Constructors
| Projection | |
Fields
| |
latestProjection :: Foldable t => Projection state event -> t event -> state Source #
Computes the latest state of a Projection from some events.
allProjections :: Projection state event -> [event] -> [state] Source #
Given a list of events, produce all the Projections that were ever
produced. Just a scanl using projectionEventHandler. This function is
useful for testing Projections; you can easily assert that all the states
of a Projection are valid given a list of events.
getLatestProjection :: Monad m => EventStore serialized m -> Projection proj serialized -> UUID -> m (proj, EventVersion) Source #
Gets the latest projection from a store by using getEvents and then
applying the events using the Projection's event handler.