X3m.System.Aggregate.Repo behaviour (X3m System v0.9.0)

Copy Markdown View Source

Summary

Callbacks

delete_stream(stream_name, hard_delete?, expected_version)

@callback delete_stream(
  stream_name :: String.t(),
  hard_delete? :: boolean(),
  expected_version :: integer()
) :: :ok

has?(stream_name)

@callback has?(stream_name :: String.t()) :: boolean()

save_events(stream_name, message, events_metadata)

@callback save_events(
  stream_name :: String.t(),
  message :: X3m.System.Message.t(),
  events_metadata :: map()
) ::
  {:ok, last_event_number :: integer()}
  | {:error, :wrong_expected_version, expected_last_event_number :: integer()}
  | {:error, any()}

stream_events(stream_name, start_at, per_page)

@callback stream_events(
  stream_name :: String.t(),
  start_at :: non_neg_integer(),
  per_page :: pos_integer()
) :: Enumerable.t()