Lockspire.Storage.LogoutStore behaviour (lockspire v1.6.1)

Copy Markdown

Domain-level persistence contract for durable logout propagation state.

Summary

Types

store_error()

@type store_error() :: term()

Callbacks

fetch_logout_event_by_event_id(t)

@callback fetch_logout_event_by_event_id(String.t()) ::
  {:ok, Lockspire.Domain.LogoutEvent.t() | nil} | {:error, store_error()}

list_all_logout_deliveries()

@callback list_all_logout_deliveries() ::
  {:ok, [Lockspire.Domain.LogoutDelivery.t()]} | {:error, store_error()}

list_logout_deliveries(integer)

@callback list_logout_deliveries(integer()) ::
  {:ok, [Lockspire.Domain.LogoutDelivery.t()]} | {:error, store_error()}

mark_logout_delivery_enqueued(integer, integer)

@callback mark_logout_delivery_enqueued(integer(), integer()) ::
  {:ok, Lockspire.Domain.LogoutDelivery.t()} | {:error, store_error()}

persist_logout_propagation(t)

@callback persist_logout_propagation(Lockspire.Domain.LogoutEvent.t()) ::
  {:ok,
   %{
     event: Lockspire.Domain.LogoutEvent.t(),
     deliveries: [Lockspire.Domain.LogoutDelivery.t()]
   }}
  | {:error, store_error()}