eventstore_client v0.1.1 EventStore.Behaviour behaviour

Summary

Callbacks

Create a new subscription

Delete a stream. Options:

hard_delete: true

Delete an existing Subscription

Ensure a subscription exists. Assert that configuration matches any existing subscription

Generate a new valid event id

Load /info subscription

Ping EventStore. Return {:ok, 200} on 200 OK, {:error, reason} otherwise

Read a stream given a specific offset (anchor), direction and size

Read from a subscription. Options:

count: 1

write_events write [%EventStore.Event{}] to storage

Callbacks

ack_events(client, subscription, events)

Specs

ack_events(client :: pid, subscription :: %EventStore.Subscription{averageItemsPerSecond: term, config: term, connections: term, countSinceLastMeasurement: term, eventStreamId: term, getMessagesUri: term, groupName: term, lastKnownEventNumber: term, lastProcessedEventNumber: term, links: term, liveBufferCount: term, parkedMessageUri: term, readBufferCount: term, retryBufferCount: term, status: term, totalInFlightMessages: term, totalItemsProcessed: term}, events :: [%EventStore.Event{data: term, eventId: term, eventNumber: term, eventType: term, isJson: term, isLinkMetaData: term, isMetaData: term, links: term, metadata: term, streamId: term, updated: term}]) ::
  :ok |
  {:error, reason :: any}

Ack an ackable event

create_subscription(client, subscription)

Specs

create_subscription(client :: pid, subscription :: %EventStore.Subscription{averageItemsPerSecond: term, config: term, connections: term, countSinceLastMeasurement: term, eventStreamId: term, getMessagesUri: term, groupName: term, lastKnownEventNumber: term, lastProcessedEventNumber: term, links: term, liveBufferCount: term, parkedMessageUri: term, readBufferCount: term, retryBufferCount: term, status: term, totalInFlightMessages: term, totalItemsProcessed: term}) ::
  {:ok, %EventStore.Subscription{averageItemsPerSecond: term, config: term, connections: term, countSinceLastMeasurement: term, eventStreamId: term, getMessagesUri: term, groupName: term, lastKnownEventNumber: term, lastProcessedEventNumber: term, links: term, liveBufferCount: term, parkedMessageUri: term, readBufferCount: term, retryBufferCount: term, status: term, totalInFlightMessages: term, totalItemsProcessed: term}} |
  {:error, {:conflict, nil}} |
  {:error, {:unexpected_status_code, code :: integer}}

Create a new subscription.

delete_stream(client, stream, options)

Specs

delete_stream(client :: pid, stream :: String.t, options :: Keyword.t) ::
  :ok |
  {:error, reason :: any}

Delete a stream. Options:

hard_delete: true
delete_subscription(client, subscription)

Specs

delete_subscription(client :: pid, subscription :: %EventStore.Subscription{averageItemsPerSecond: term, config: term, connections: term, countSinceLastMeasurement: term, eventStreamId: term, getMessagesUri: term, groupName: term, lastKnownEventNumber: term, lastProcessedEventNumber: term, links: term, liveBufferCount: term, parkedMessageUri: term, readBufferCount: term, retryBufferCount: term, status: term, totalInFlightMessages: term, totalItemsProcessed: term}) ::
  :ok |
  {:error, :not_found} |
  {:error, {:unexpected_status_code, code :: integer}}

Delete an existing Subscription

ensure_subscription(client, subscription)

Specs

ensure_subscription(client :: pid, subscription :: %EventStore.Subscription{averageItemsPerSecond: term, config: term, connections: term, countSinceLastMeasurement: term, eventStreamId: term, getMessagesUri: term, groupName: term, lastKnownEventNumber: term, lastProcessedEventNumber: term, links: term, liveBufferCount: term, parkedMessageUri: term, readBufferCount: term, retryBufferCount: term, status: term, totalInFlightMessages: term, totalItemsProcessed: term}) ::
  {:ok, %EventStore.Subscription{averageItemsPerSecond: term, config: term, connections: term, countSinceLastMeasurement: term, eventStreamId: term, getMessagesUri: term, groupName: term, lastKnownEventNumber: term, lastProcessedEventNumber: term, links: term, liveBufferCount: term, parkedMessageUri: term, readBufferCount: term, retryBufferCount: term, status: term, totalInFlightMessages: term, totalItemsProcessed: term}} |
  {:error, :not_found} |
  {:error, {:conflict, {:conflicting_keys, keys :: [atom]}}} |
  {:error, {:unexpected_status_code, code :: integer}}

Ensure a subscription exists. Assert that configuration matches any existing subscription

follow_stream(client, response)

Specs

follow_stream(client :: pid, response :: %EventStore.Response{eTag: term, entries: term, headOfStream: term, id: term, links: term, streamId: term}) ::
  {:ok, %EventStore.Response{eTag: term, entries: term, headOfStream: term, id: term, links: term, streamId: term}} |
  {:error, reason :: any}
follow_stream(client :: pid, stream :: String.t) ::
  {:ok, %EventStore.Response{eTag: term, entries: term, headOfStream: term, id: term, links: term, streamId: term}} |
  {:error, reason :: any}
gen_id!()

Specs

gen_id! :: String.t

Generate a new valid event id

load_subscription(client, subscription)

Specs

load_subscription(client :: pid, subscription :: %EventStore.Subscription{averageItemsPerSecond: term, config: term, connections: term, countSinceLastMeasurement: term, eventStreamId: term, getMessagesUri: term, groupName: term, lastKnownEventNumber: term, lastProcessedEventNumber: term, links: term, liveBufferCount: term, parkedMessageUri: term, readBufferCount: term, retryBufferCount: term, status: term, totalInFlightMessages: term, totalItemsProcessed: term}) ::
  {:ok, subscription :: %EventStore.Subscription{averageItemsPerSecond: term, config: term, connections: term, countSinceLastMeasurement: term, eventStreamId: term, getMessagesUri: term, groupName: term, lastKnownEventNumber: term, lastProcessedEventNumber: term, links: term, liveBufferCount: term, parkedMessageUri: term, readBufferCount: term, retryBufferCount: term, status: term, totalInFlightMessages: term, totalItemsProcessed: term}} |
  {:error, :not_found} |
  {:error, {:unexpected_status_code, code :: integer}}

Load /info subscription

nack_events(client, subscription, events, action)

Specs

nack_events(client :: pid, subscription :: %EventStore.Subscription{averageItemsPerSecond: term, config: term, connections: term, countSinceLastMeasurement: term, eventStreamId: term, getMessagesUri: term, groupName: term, lastKnownEventNumber: term, lastProcessedEventNumber: term, links: term, liveBufferCount: term, parkedMessageUri: term, readBufferCount: term, retryBufferCount: term, status: term, totalInFlightMessages: term, totalItemsProcessed: term}, events :: [%EventStore.Event{data: term, eventId: term, eventNumber: term, eventType: term, isJson: term, isLinkMetaData: term, isMetaData: term, links: term, metadata: term, streamId: term, updated: term}], action :: String.t) ::
  :ok |
  {:error, reason :: any}

Nack a nackable event

ping(client, options)

Specs

ping(client :: pid, options :: Keyword.t) ::
  {:ok, 200} |
  {:error, status :: integer} |
  {:error, reason :: term}

Ping EventStore. Return {:ok, 200} on 200 OK, {:error, reason} otherwise

read_from_stream(client, stream, movement)

Specs

read_from_stream(client :: pid, stream :: String.t, movement :: tuple) ::
  {:ok, response :: %EventStore.Response{eTag: term, entries: term, headOfStream: term, id: term, links: term, streamId: term}} |
  {:error, reason :: any}

Read a stream given a specific offset (anchor), direction and size

read_from_subscription(client, subscription, opts)

Specs

read_from_subscription(client :: pid, subscription :: %EventStore.Subscription{averageItemsPerSecond: term, config: term, connections: term, countSinceLastMeasurement: term, eventStreamId: term, getMessagesUri: term, groupName: term, lastKnownEventNumber: term, lastProcessedEventNumber: term, links: term, liveBufferCount: term, parkedMessageUri: term, readBufferCount: term, retryBufferCount: term, status: term, totalInFlightMessages: term, totalItemsProcessed: term}, opts :: Keyword.t) ::
  {:ok, %EventStore.Subscription{averageItemsPerSecond: term, config: term, connections: term, countSinceLastMeasurement: term, eventStreamId: term, getMessagesUri: term, groupName: term, lastKnownEventNumber: term, lastProcessedEventNumber: term, links: term, liveBufferCount: term, parkedMessageUri: term, readBufferCount: term, retryBufferCount: term, status: term, totalInFlightMessages: term, totalItemsProcessed: term}, [%EventStore.Event{data: term, eventId: term, eventNumber: term, eventType: term, isJson: term, isLinkMetaData: term, isMetaData: term, links: term, metadata: term, streamId: term, updated: term}]} |
  {:error, reason :: any}

Read from a subscription. Options:

count: 1
write_events(client, stream, events)

Specs

write_events(client :: pid, stream :: String.t, events :: [%EventStore.Event{data: term, eventId: term, eventNumber: term, eventType: term, isJson: term, isLinkMetaData: term, isMetaData: term, links: term, metadata: term, streamId: term, updated: term}]) ::
  {:ok, events :: [%EventStore.Event{data: term, eventId: term, eventNumber: term, eventType: term, isJson: term, isLinkMetaData: term, isMetaData: term, links: term, metadata: term, streamId: term, updated: term}]} |
  {:error, reason :: any}

write_events write [%EventStore.Event{}] to storage