PhoenixAI.Store.Adapter.EventStore behaviour (PhoenixAI.Store v0.1.0)

Copy Markdown View Source

Sub-behaviour for adapters that support the append-only event log. No update or delete callbacks — events are immutable once written.

Audit trail preservation

Events are intentionally NOT deleted when a conversation is deleted. The event log is an audit trail that persists beyond the lifecycle of individual conversations. This is by design — if a conversation is soft-deleted or hard-deleted, its associated events remain queryable for compliance, debugging, and cost attribution purposes.

Summary

Callbacks

count_events(filters, keyword)

@callback count_events(
  filters :: keyword(),
  keyword()
) :: {:ok, non_neg_integer()}

list_events(filters, keyword)

@callback list_events(
  filters :: keyword(),
  keyword()
) ::
  {:ok,
   %{
     events: [PhoenixAI.Store.EventLog.Event.t()],
     next_cursor: String.t() | nil
   }}

log_event(t, keyword)

@callback log_event(
  PhoenixAI.Store.EventLog.Event.t(),
  keyword()
) :: {:ok, PhoenixAI.Store.EventLog.Event.t()} | {:error, term()}