Mnemonix v0.10.0 Mnemonix.Stores.Map View Source

A Mnemonix.Store that uses a map to store state.

Intended to be an example for implementing the Mnemonix.Store.Behaviour and experimenting with the Mnemonix API rather than production usage.

It intentionally doesn’t override any optional callback with native versions so that the default implementations can be easily tested.

iex> {:ok, store} = Mnemonix.Stores.Map.start_link
iex> Mnemonix.put(store, "foo", "bar")
iex> Mnemonix.get(store, "foo")
"bar"
iex> Mnemonix.delete(store, "foo")
iex> Mnemonix.get(store, "foo")
nil

This store supports the functions in Mnemonix.Features.Enumerable.

Link to this section Summary

Functions

Callback implementation for c:Mnemonix.Store.Behaviours.Map.delete/2

Callback implementation for c:Mnemonix.Store.Behaviours.Map.fetch/2

Callback implementation for c:Mnemonix.Store.Behaviours.Map.put/3

Constructs a map to store data using provided opts

Starts a new store using the Mnemonix.Stores.Map module with options

Starts a new store using Mnemonix.Stores.Map with store and server options

Link to this section Functions

Link to this function delete(store, key) View Source
delete(Mnemonix.Store.t(), Mnemonix.key()) ::
  {:ok, Mnemonix.Store.t()} |
  Mnemonix.Store.Behaviour.exception()

Callback implementation for c:Mnemonix.Store.Behaviours.Map.delete/2.

Link to this function fetch(store, key) View Source
fetch(Mnemonix.Store.t(), Mnemonix.key()) ::
  {:ok, Mnemonix.Store.t(), {:ok, Mnemonix.value()} | :error} |
  Mnemonix.Store.Behaviour.exception()

Callback implementation for c:Mnemonix.Store.Behaviours.Map.fetch/2.

Link to this function put(store, key, value) View Source
put(Mnemonix.Store.t(), Mnemonix.key(), Mnemonix.Store.value()) ::
  {:ok, Mnemonix.Store.t()} |
  Mnemonix.Store.Behaviour.exception()

Callback implementation for c:Mnemonix.Store.Behaviours.Map.put/3.

Link to this function setup(opts) View Source
setup(Mnemonix.Store.options()) ::
  {:ok, state :: term()} |
  {:stop, reason :: any()}

Constructs a map to store data using provided opts.

Options

  • initial: An existing map to start the store with.

    • Default: %{}

Starts a new store using the Mnemonix.Stores.Map module with options.

The options are the same as described in Mnemonix.Features.Supervision.start_link/2. The :store options are used in config/1 to start the store; the :server options are passed directly to GenServer.start_link/2.

The returned GenServer.server/0 reference can be used as the primary argument to the Mnemonix API.

Examples

iex> {:ok, store} = Mnemonix.Stores.Map.start_link()
iex> Mnemonix.put(store, "foo", "bar")
iex> Mnemonix.get(store, "foo")
"bar"

iex> {:ok, _store} = Mnemonix.Stores.Map.start_link(server: [name: My.Mnemonix.Stores.Map])
iex> Mnemonix.put(My.Mnemonix.Stores.Map, "foo", "bar")
iex> Mnemonix.get(My.Mnemonix.Stores.Map, "foo")
"bar"

Starts a new store using Mnemonix.Stores.Map with store and server options.

The options are the same as described in Mnemonix.start_link/2. The store options are used in config/1 to start the store; the server options are passed directly to GenServer.start_link/2.

The returned GenServer.server/0 reference can be used as the primary argument to the Mnemonix API.

Examples

iex> {:ok, store} = Mnemonix.Stores.Map.start_link([], [])
iex> Mnemonix.put(store, "foo", "bar")
iex> Mnemonix.get(store, "foo")
"bar"

iex> {:ok, _store} = Mnemonix.Stores.Map.start_link([], [name: My.Mnemonix.Stores.Map])
iex> Mnemonix.put(My.Mnemonix.Stores.Map, "foo", "bar")
iex> Mnemonix.get(My.Mnemonix.Stores.Map, "foo")
"bar"