Foundation.Contracts.EventStore behaviour (foundation v0.1.0)
Behaviour contract for event storage implementations.
Defines the interface for event persistence, retrieval, and management. Supports different storage backends (memory, disk, distributed).
Summary
Callbacks
Check if event store is available.
Retrieve an event by ID.
Get events by correlation ID.
Initialize the event store service.
Delete events older than the specified timestamp.
Query events with filters and pagination.
Get storage statistics.
Get event store service status.
Store a single event.
Store multiple events atomically.
Types
@type correlation_id() :: Foundation.Types.Event.correlation_id()
@type event_filter() :: keyword()
@type event_id() :: Foundation.Types.Event.event_id()
@type event_query() :: map()
Callbacks
@callback available?() :: boolean()
Check if event store is available.
@callback get(event_id()) :: {:ok, Foundation.Types.Event.t()} | {:error, Foundation.Types.Error.t()}
Retrieve an event by ID.
@callback get_by_correlation(correlation_id()) :: {:ok, [Foundation.Types.Event.t()]} | {:error, Foundation.Types.Error.t()}
Get events by correlation ID.
@callback initialize() :: :ok | {:error, Foundation.Types.Error.t()}
Initialize the event store service.
@callback prune_before(integer()) :: {:ok, non_neg_integer()} | {:error, Foundation.Types.Error.t()}
Delete events older than the specified timestamp.
@callback query(event_query()) :: {:ok, [Foundation.Types.Event.t()]} | {:error, Foundation.Types.Error.t()}
Query events with filters and pagination.
@callback stats() :: {:ok, map()} | {:error, Foundation.Types.Error.t()}
Get storage statistics.
@callback status() :: {:ok, map()} | {:error, Foundation.Types.Error.t()}
Get event store service status.
@callback store(Foundation.Types.Event.t()) :: {:ok, event_id()} | {:error, Foundation.Types.Error.t()}
Store a single event.
@callback store_batch([Foundation.Types.Event.t()]) :: {:ok, [event_id()]} | {:error, Foundation.Types.Error.t()}
Store multiple events atomically.