eventsource-api-1.0.0: Provides a eventsourcing high level API.

Copyright(C) 2016 Yorick Laupa
License(see the file LICENSE)
MaintainerYorick Laupa <yo.eight@gmail.com>
Stabilityprovisional
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

EventSource.Types

Description

 

Synopsis

Documentation

data Data Source #

Opaque data type used to store raw data.

Instances

newtype JsonParsing a Source #

Sometimes, having to implement a FromJSON instance isn't flexible enough. JsonParsing allow to pass parameters when parsing from a JSON value while remaining composable.

Constructors

JsonParsing (Value -> Parser a) 

dataAsBytes :: Data -> ByteString Source #

Returns Data content as a ByteString.

dataFromBytes :: ByteString -> Data Source #

Creates a Data object from a raw ByteString.

dataFromJson :: ToJSON a => a -> Data Source #

Creates a Data object from a JSON object.

dataAsJson :: FromJSON a => Data -> Either Text a Source #

Returns Data content as any value that implements FromJSON type-class.

dataAsParsing :: Data -> JsonParsing a -> Either Text a Source #

Uses a JsonParsing comuputation to extract a value.

dataAsParse :: Data -> (Value -> Parser a) -> Either Text a Source #

Like dataAsParsing but doesn't require you to use JsonParsing.

property :: MonadPlus m => Text -> Properties -> m Text Source #

Retrieves a value associated with the given key.

singleton :: Text -> Text -> Properties Source #

Builds a Properties with a single pair of key-value.

setProperty :: Text -> Text -> Properties -> Properties Source #

Adds a pair of key-value into given Properties.

properties :: Properties -> [(Text, Text)] Source #

Returns all associated key-value pairs as a list.

newtype EventId Source #

Used to identify an event.

Constructors

EventId UUID 

freshEventId :: MonadIO m => m EventId Source #

Generates a fresh EventId.

newtype EventType Source #

Used to identity the type of an Event.

Constructors

EventType Text 

setEventId :: EventId -> State Event () Source #

Sets Eventid for an Event.

setEventPayload :: Data -> State Event () Source #

Sets a payload for an Event.

setEventMetadata :: Properties -> State Event () Source #

Sets metadata for an Event.

data Event Source #

Encapsulates an event which is about to be saved.

data SavedEvent Source #

Represents an event that's saved into the event store.

Constructors

SavedEvent 

data Slice Source #

Represents batch of events read from a store.

Instances

sliceEventsAs :: DecodeEvent a => Slice -> Either Text [a] Source #

Deserializes a Slice's events.

class EncodeEvent a where Source #

Encodes a data object into an Event. encodeEvent get passed an EventId in a case where a fresh id is needed.

Minimal complete definition

encodeEvent

Methods

encodeEvent :: a -> State Event () Source #

class DecodeEvent a where Source #

Decodes an Event into a data object.

Minimal complete definition

decodeEvent

data ExpectedVersion Source #

The purpose of ExpectedVersion is to make sure a certain stream state is at an expected point in order to carry out a write.

data ReadStatus a Source #

Statuses you can get on every read attempt.

Instances

Functor ReadStatus Source # 

Methods

fmap :: (a -> b) -> ReadStatus a -> ReadStatus b #

(<$) :: a -> ReadStatus b -> ReadStatus a #

Foldable ReadStatus Source # 

Methods

fold :: Monoid m => ReadStatus m -> m #

foldMap :: Monoid m => (a -> m) -> ReadStatus a -> m #

foldr :: (a -> b -> b) -> b -> ReadStatus a -> b #

foldr' :: (a -> b -> b) -> b -> ReadStatus a -> b #

foldl :: (b -> a -> b) -> b -> ReadStatus a -> b #

foldl' :: (b -> a -> b) -> b -> ReadStatus a -> b #

foldr1 :: (a -> a -> a) -> ReadStatus a -> a #

foldl1 :: (a -> a -> a) -> ReadStatus a -> a #

toList :: ReadStatus a -> [a] #

null :: ReadStatus a -> Bool #

length :: ReadStatus a -> Int #

elem :: Eq a => a -> ReadStatus a -> Bool #

maximum :: Ord a => ReadStatus a -> a #

minimum :: Ord a => ReadStatus a -> a #

sum :: Num a => ReadStatus a -> a #

product :: Num a => ReadStatus a -> a #

Traversable ReadStatus Source # 

Methods

traverse :: Applicative f => (a -> f b) -> ReadStatus a -> f (ReadStatus b) #

sequenceA :: Applicative f => ReadStatus (f a) -> f (ReadStatus a) #

mapM :: Monad m => (a -> m b) -> ReadStatus a -> m (ReadStatus b) #

sequence :: Monad m => ReadStatus (m a) -> m (ReadStatus a) #

Show a => Show (ReadStatus a) Source # 

data ReadFailure Source #

Represents the different kind of failure you can get when reading.