Autonomic.Store behaviour (Autonomic v0.1.0)

Copy Markdown View Source

Authoritative persistence contract for episode, epoch, lease and effect state.

Summary

Callbacks

advance_epoch(episode_id, map)

@callback advance_epoch(Autonomic.Contracts.episode_id(), map()) ::
  {:ok, Autonomic.Contracts.epoch()} | {:error, term()}

append_event(episode_id, atom, map)

@callback append_event(Autonomic.Contracts.episode_id(), atom(), map()) ::
  {:ok, non_neg_integer()} | {:error, term()}

current_epoch(episode_id)

@callback current_epoch(Autonomic.Contracts.episode_id()) ::
  {:ok, Autonomic.Contracts.epoch()} | {:error, term()}

fetch_effect(effect_id)

@callback fetch_effect(Autonomic.Contracts.effect_id()) ::
  {:ok, Autonomic.ProposedEffect.t()} | :not_found | {:error, term()}

fetch_lease(lease_id)

@callback fetch_lease(Autonomic.Contracts.lease_id()) ::
  {:ok, Autonomic.CapabilityLease.t()} | :not_found | {:error, term()}

put_effect(t)

@callback put_effect(Autonomic.ProposedEffect.t()) :: :ok | {:error, term()}

put_lease(t)

@callback put_lease(Autonomic.CapabilityLease.t()) :: :ok | {:error, term()}