Helios v0.1.0 Helios.EventJournal.Adapter behaviour View Source

Defines behaviour for EventJournal adapter.

Link to this section Summary

Link to this section Types

Link to this type append_error() View Source
append_error() :: :wrong_expected_version | :stream_deleted | :access_denied
Link to this type event_number() View Source
event_number() :: integer()
Link to this type stream_name() View Source
stream_name() :: String.t()

Link to this section Callbacks

Link to this callback append_to_stream(server, stream, events, expexted_version) View Source
append_to_stream(
  server :: module(),
  stream :: stream_name(),
  events :: [Helios.EventJournal.Messages.EventData.t()],
  expexted_version :: event_number()
) :: {:ok, event_number()} | {:error, append_error()}

Append events to stream if given expected version matches to last written event in journals database

Link to this callback delete_stream(server, stream, expected_version, hard_delete) View Source
delete_stream(
  server :: module(),
  stream :: String.t(),
  expected_version :: integer(),
  hard_delete :: boolean()
) ::
  {:ok, [Helios.EventJournal.Messages.Position.t()]}
  | {:error, Helios.EventJournal.Messages.ReadAllEventsResponse.read_error()}
Link to this callback get_stream_metadata(server, stream) View Source
get_stream_metadata(server :: module(), stream :: stream_name()) ::
  {:ok, event_number()} | {:error, append_error()}
Link to this callback read_all_events_backward(server, position, max_events, resolve_links) View Source
read_all_events_backward(
  server :: module(),
  position :: {integer(), integer()},
  max_events :: integer(),
  resolve_links :: boolean()
) ::
  {:ok, [Helios.EventJournal.Messages.ReadAllEventsResponse.t()]}
  | {:error, Helios.EventJournal.Messages.ReadAllEventsResponse.read_error()}
Link to this callback read_all_events_forward(server, position, max_events, resolve_links) View Source
read_all_events_forward(
  server :: module(),
  position :: {integer(), integer()},
  max_events :: integer(),
  resolve_links :: boolean()
) ::
  {:ok, [Helios.EventJournal.Messages.ReadAllEventsResponse.t()]}
  | {:error, Helios.EventJournal.Messages.ReadAllEventsResponse.read_error()}
Link to this callback read_event(server, stream, event_number, resolve_links) View Source
read_event(
  server :: module(),
  stream :: stream_name(),
  event_number :: event_number(),
  resolve_links :: boolean()
) ::
  {:ok, Helios.EventJournal.Messages.PersistedEvent.t()}
  | {:error, Helios.EventJournal.Messages.PersistedEvent.read_error()}

Reads single event from stream

Link to this callback read_stream_events_backward(server, stream, event_number, max_events, resolve_links) View Source
read_stream_events_backward(
  server :: module(),
  stream :: stream_name(),
  event_number :: event_number(),
  max_events :: integer(),
  resolve_links :: boolean()
) ::
  {:ok, [Helios.EventJournal.Messages.ReadStreamEventsResponse.t()]}
  | {:error, Helios.EventJournal.Messages.ReadStreamEventsResponse.read_error()}

Reads max_events events from journal from given position backward until max_events or begining of stream is reached

Link to this callback read_stream_events_forward(server, stream, event_number, max_events, resolve_links) View Source
read_stream_events_forward(
  server :: module(),
  stream :: stream_name(),
  event_number :: event_number(),
  max_events :: integer(),
  resolve_links :: boolean()
) ::
  {:ok, [Helios.EventJournal.Messages.ReadStreamEventsResponse.t()]}
  | {:error, Helios.EventJournal.Messages.ReadStreamEventsResponse.read_error()}

Reads forward max_events events from journal from given position

Link to this callback set_stream_metadata(server, stream, metadata, expexted_version) View Source
set_stream_metadata(
  server :: module(),
  stream :: stream_name(),
  metadata :: map(),
  expexted_version :: event_number()
) :: {:ok, event_number()} | {:error, append_error()}
Link to this callback start_link(module, config, opts) View Source
start_link(module :: module(), config :: keyword(), opts :: keyword()) ::
  :ignore | {:error, any()} | {:ok, pid()}