View Source Haystack.Storage.Map (Haystack v0.1.0)

A map implementation of the storage behaviour.

Link to this section Summary

Functions

Return the count of items in storage.

Delete an item from storage.

Fetch an item from storage.

Fetch an item from storage.

Insert an item into storage.

Create a new storage.

Serialize the storage.

Update an item in storage.

Update an item in storage.

Upsert an item in storage.

Link to this section Types

@type t() :: %Haystack.Storage.Map{data: %{required(term()) => term()}}

Link to this section Functions

Return the count of items in storage.

examples

Examples

iex> storage = Storage.Map.new()
iex> storage = Storage.insert(storage, :name, "Haystack")
iex> Storage.count(storage)
1

Delete an item from storage.

examples

Examples

iex> storage = Storage.Map.new()
iex> storage = Storage.Map.delete(storage, :name)
iex> Storage.Map.fetch(storage, :name)
{:error, %Storage.NotFoundError{message: "Not found"}}

iex> storage = Storage.Map.new()
iex> storage = Storage.Map.insert(storage, :name, "Haystack")
iex> storage = Storage.Map.delete(storage, :name)
iex> Storage.Map.fetch(storage, :name)
{:error, %Storage.NotFoundError{message: "Not found"}}

Fetch an item from storage.

examples

Examples

iex> storage = Storage.Map.new()
iex> Storage.Map.fetch(storage, :name)
{:error, %Storage.NotFoundError{message: "Not found"}}

iex> storage = Storage.Map.new()
iex> storage = Storage.Map.insert(storage, :name, "Haystack")
iex> Storage.Map.fetch(storage, :name)
{:ok, "Haystack"}

Fetch an item from storage.

examples

Examples

iex> storage = Storage.Map.new()
iex> storage = Storage.Map.insert(storage, :name, "Haystack")
iex> Storage.Map.fetch!(storage, :name)
"Haystack"

Insert an item into storage.

examples

Examples

iex> storage = Storage.Map.new()
iex> storage = Storage.Map.insert(storage, :name, "Haystack")
iex> Storage.Map.fetch!(storage, :name)
"Haystack"

Create a new storage.

examples

Examples

iex> Storage.Map.new()

Serialize the storage.

examples

Examples

iex> storage = Storage.Map.new()
iex> Storage.serialize(storage)

Update an item in storage.

examples

Examples

iex> storage = Storage.Map.new()
iex> Storage.Map.update(storage, :name, &String.upcase/1)
{:error, %Storage.NotFoundError{message: "Not found"}}

iex> storage = Storage.Map.new()
iex> storage = Storage.Map.insert(storage, :name, "Haystack")
iex> {:ok, storage} = Storage.Map.update(storage, :name, &String.upcase/1)
iex> Storage.Map.fetch!(storage, :name)
"HAYSTACK"

Update an item in storage.

examples

Examples

iex> storage = Storage.Map.new()
iex> storage = Storage.Map.insert(storage, :name, "Haystack")
iex> storage = Storage.Map.update!(storage, :name, &String.upcase/1)
iex> Storage.Map.fetch!(storage, :name)
"HAYSTACK"
Link to this function

upsert(storage, k, v, f)

View Source

Upsert an item in storage.

examples

Examples

iex> storage = Storage.Map.new()
iex> storage = Storage.Map.upsert(storage, :name, "HAYSTACK", &String.upcase/1)
iex> Storage.Map.fetch!(storage, :name)
"HAYSTACK"

iex> storage = Storage.Map.new()
iex> storage = Storage.Map.insert(storage, :name, "Haystack")
iex> storage = Storage.Map.upsert(storage, :name, "HAYSTACK", &String.upcase/1)
iex> Storage.Map.fetch!(storage, :name)
"HAYSTACK"