Bandera.Store.Persistent behaviour (bandera v0.1.0)

Copy Markdown

Behaviour for durable flag storage adapters (Memory, Ecto, Redis).

Summary

Callbacks

Returns {:ok, names} with every stored flag name, or {:error, reason}.

Returns {:ok, flags} with every stored flag, or {:error, reason}.

Removes the entire flag from durable storage and returns the resulting empty flag.

Removes a single gate from durable storage and returns the updated flag.

Reads a flag straight from durable storage. Returns {:ok, flag} or {:error, reason}.

Persists gate onto the flag and returns the updated flag (or {:error, reason}).

Callbacks

all_flag_names()

@callback all_flag_names() :: {:ok, [atom()]} | {:error, term()}

Returns {:ok, names} with every stored flag name, or {:error, reason}.

all_flags()

@callback all_flags() :: {:ok, [Bandera.Flag.t()]} | {:error, term()}

Returns {:ok, flags} with every stored flag, or {:error, reason}.

delete(flag_name)

@callback delete(flag_name :: atom()) :: {:ok, Bandera.Flag.t()} | {:error, term()}

Removes the entire flag from durable storage and returns the resulting empty flag.

delete(flag_name, gate)

@callback delete(flag_name :: atom(), gate :: Bandera.Gate.t()) ::
  {:ok, Bandera.Flag.t()} | {:error, term()}

Removes a single gate from durable storage and returns the updated flag.

get(flag_name)

@callback get(flag_name :: atom()) :: {:ok, Bandera.Flag.t()} | {:error, term()}

Reads a flag straight from durable storage. Returns {:ok, flag} or {:error, reason}.

put(flag_name, gate)

@callback put(flag_name :: atom(), gate :: Bandera.Gate.t()) ::
  {:ok, Bandera.Flag.t()} | {:error, term()}

Persists gate onto the flag and returns the updated flag (or {:error, reason}).