eventstore v0.2.0 EventStore
EventStore process to read and write events to a logical event stream
Example usage
# ensure the event store application has been started
Application.ensure_all_started(:eventstore)
# append events to a stream
{:ok, persisted_events} = EventStore.append_to_stream(stream_uuid, expected_version, events)
# read all events from a stream, starting at the beginning
{:ok, recorded_events} = EventStore.read_stream_forward(stream_uuid)
Summary
Functions
Append one or more events to a stream atomically
Reads the requested number of events from the given stream, in the order in which they were originally written
Subscriber will be notified of each event persisted to any stream
Subscriber will be notified of each event persisted to a single stream
Unsubscribe an existing subscriber from event notifications
Functions
Append one or more events to a stream atomically.
stream_uuid
is used to uniquely identify a stream.expected_version
is used for optimistic concurrency. Specify 0 for the creation of a new stream. An{:error, wrong_expected_version}
response will be returned if the stream already exists. Any positive number will be used to ensure you can only append to the stream if it is at exactly that version.events
is a list of%EventStore.EventData{}
structs EventStore does not have any built-in serialization. The payload and headers for each event should already be serialized to binary data before appending to the stream.
Reads the requested number of events from the given stream, in the order in which they were originally written.
stream_uuid
is used to uniquely identify a stream.start_version
optionally, the version number of the first event to read. Defaults to the beginning of the stream if not set.count
optionally, the maximum number of events to read. If not set it will return all events from the stream.
Subscriber will be notified of each event persisted to any stream.
subscription_name
is used to name the subscription group.subscriber
is a process that will receive{:event, event}
callback messages.
Returns {:ok, subscription}
when subscription succeeds.
Subscriber will be notified of each event persisted to a single stream.
stream_uuid
is the stream to subscribe to. Use the$all
identifier to subscribe to events from all streams.subscription_name
is used to name the subscription group.subscriber
is a process that will receive{:event, event}
callback messages.
Returns {:ok, subscription}
when subscription succeeds.
Unsubscribe an existing subscriber from event notifications.
stream_uuid
is the stream to subscribe to. Use the$all
identifier to subscribe to events from all streams.subscription_name
is used to name the subscription group.subscriber
is a process that will receive{:event, event}
callback messages.
Returns :ok
on success.