Raxol.Storage.EventStorage behaviour (Raxol v2.0.1)

View Source

Storage interface for event sourcing system.

This module defines the behavior for event storage implementations and provides a unified interface for storing and retrieving events.

Summary

Functions

Appends an event to the specified stream.

Appends multiple events to the specified stream.

Lists all available streams.

Loads the latest snapshot for a stream.

Reads all events across all streams.

Reads events from a specific stream.

Saves a snapshot for a stream.

Types

event()

position()

@type position() :: non_neg_integer()

stream_name()

@type stream_name() :: String.t()

version()

@type version() :: non_neg_integer()

Callbacks

append_event(storage, event, stream_name)

@callback append_event(
  storage :: term(),
  event :: event(),
  stream_name :: stream_name()
) :: {:ok, String.t()} | {:error, term()}

append_events(storage, events, stream_name)

@callback append_events(
  storage :: term(),
  events :: [event()],
  stream_name :: stream_name()
) :: {:ok, [String.t()]} | {:error, term()}

list_streams(storage)

@callback list_streams(storage :: term()) ::
  {:ok, [Raxol.Architecture.EventSourcing.EventStream.t()]} | {:error, term()}

load_snapshot(storage, stream_name)

@callback load_snapshot(storage :: term(), stream_name :: stream_name()) ::
  {:ok, term()} | {:error, term()}

read_all(storage, start_position, count)

@callback read_all(
  storage :: term(),
  start_position :: position(),
  count :: pos_integer()
) :: {:ok, [event()]} | {:error, term()}

read_stream(storage, stream_name, start_position, count)

@callback read_stream(
  storage :: term(),
  stream_name :: stream_name(),
  start_position :: position(),
  count :: pos_integer()
) :: {:ok, [event()]} | {:error, term()}

save_snapshot(storage, snapshot)

@callback save_snapshot(storage :: term(), snapshot :: term()) :: :ok | {:error, term()}

Functions

append_event(storage, event, stream_name)

Appends an event to the specified stream.

append_events(storage, events, stream_name)

Appends multiple events to the specified stream.

list_streams(storage)

Lists all available streams.

load_snapshot(storage, stream_name)

Loads the latest snapshot for a stream.

read_all(storage, start_position, count)

Reads all events across all streams.

read_stream(storage, stream_name, start_position, count)

Reads events from a specific stream.

save_snapshot(storage, snapshot)

Saves a snapshot for a stream.