Current section

Files

Jump to
x3m_system lib aggregate_repo.ex
Raw

lib/aggregate_repo.ex

defmodule X3m.System.Aggregate.Repo do
@callback has?(stream_name :: String.t()) :: boolean
@callback stream_events(
stream_name :: String.t(),
start_at :: non_neg_integer(),
per_page :: pos_integer()
) :: Enumerable.t()
@callback delete_stream(
stream_name :: String.t(),
hard_delete? :: boolean,
expected_version :: integer()
) :: :ok
@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}
defmacro __using__(_opts) do
quote do
@moduledoc false
@behaviour X3m.System.Aggregate.Repo
end
end
end