Jidoka.Harness.Store behaviour (Jidoka v0.8.0-beta.1)

Copy Markdown View Source

Behaviour and delegator for harness session storage.

Store implementations persist Jidoka.Harness.Session data. They should not know about provider clients, process state, or private Runic internals.

Summary

Types

store()

@type store() :: module() | {module(), keyword()}

Callbacks

claim_session(t, t, keyword)

(optional)
@callback claim_session(String.t(), Jidoka.Turn.Request.t(), keyword()) ::
  {:ok, Jidoka.Harness.Session.t()} | {:error, term()}

get_session(t, keyword)

@callback get_session(
  String.t(),
  keyword()
) :: {:ok, Jidoka.Harness.Session.t()} | {:error, term()}

list_sessions(keyword)

@callback list_sessions(keyword()) ::
  {:ok, [Jidoka.Harness.Session.t()]} | {:error, term()}

put_session(t, keyword)

@callback put_session(
  Jidoka.Harness.Session.t(),
  keyword()
) :: {:ok, Jidoka.Harness.Session.t()} | {:error, term()}

Functions

claim_session(store, session_id, request)

@spec claim_session(store(), String.t(), Jidoka.Turn.Request.t()) ::
  {:ok, Jidoka.Harness.Session.t()} | {:error, term()}

get_session(store, session_id)

@spec get_session(store(), String.t()) ::
  {:ok, Jidoka.Harness.Session.t()} | {:error, term()}

list_sessions(store)

@spec list_sessions(store()) :: {:ok, [Jidoka.Harness.Session.t()]} | {:error, term()}

pending_reviews(store)

@spec pending_reviews(store()) ::
  {:ok, [Jidoka.Review.Request.t()]} | {:error, term()}

put_session(store, session)

@spec put_session(store(), Jidoka.Harness.Session.t()) ::
  {:ok, Jidoka.Harness.Session.t()} | {:error, term()}