Current section
Files
Jump to
Current section
Files
lib/adk/session/service.ex
defmodule ADK.Session.Service do
@moduledoc """
Behaviour for session storage backends.
Implementations manage session lifecycle (create, get, list, delete)
and event persistence (append_event). The InMemorySessionService
provides the default implementation.
"""
@type opts :: keyword()
@doc "Creates a new session."
@callback create(server :: GenServer.server(), opts()) ::
{:ok, ADK.Session.t()} | {:error, term()}
@doc "Retrieves a session by identity."
@callback get(server :: GenServer.server(), opts()) ::
{:ok, ADK.Session.t()} | {:error, term()}
@doc "Lists sessions matching criteria."
@callback list(server :: GenServer.server(), opts()) ::
{:ok, [ADK.Session.t()]} | {:error, term()}
@doc "Deletes a session."
@callback delete(server :: GenServer.server(), opts()) ::
:ok | {:error, term()}
@doc "Appends an event to a session."
@callback append_event(server :: GenServer.server(), ADK.Session.t(), ADK.Event.t()) ::
:ok | {:error, term()}
end