Parrhesia.Storage.Groups behaviour (parrhesia v0.12.0)

Copy Markdown

Storage callbacks for NIP-29/NIP-43 group membership and role state.

Summary

Types

context()

@type context() :: map()

group_id()

@type group_id() :: binary()

membership()

@type membership() :: map()

pubkey()

@type pubkey() :: binary()

reason()

@type reason() :: term()

role()

@type role() :: map()

Callbacks

delete_membership(context, group_id, pubkey)

@callback delete_membership(context(), group_id(), pubkey()) :: :ok | {:error, reason()}

delete_role(context, group_id, pubkey, binary)

@callback delete_role(context(), group_id(), pubkey(), binary()) ::
  :ok | {:error, reason()}

get_membership(context, group_id, pubkey)

@callback get_membership(context(), group_id(), pubkey()) ::
  {:ok, membership() | nil} | {:error, reason()}

list_memberships(context, group_id)

@callback list_memberships(context(), group_id()) ::
  {:ok, [membership()]} | {:error, reason()}

list_roles(context, group_id, pubkey)

@callback list_roles(context(), group_id(), pubkey()) ::
  {:ok, [role()]} | {:error, reason()}

put_membership(context, membership)

@callback put_membership(context(), membership()) ::
  {:ok, membership()} | {:error, reason()}

put_role(context, role)

@callback put_role(context(), role()) :: {:ok, role()} | {:error, reason()}