Packages

Store & retrieve structs against various backends with a simple lightweight API.

Current section

Files

Jump to
stored lib stored backends ets.ex
Raw

lib/stored/backends/ets.ex

defmodule Stored.Backends.ETS do
@behaviour Stored.Backend
def create(table_name) do
:ets.new(table_name, [:set, :protected, :named_table])
:ok
end
def put(item, table_name) do
key = Stored.Item.key(item)
record = {key, item}
true = :ets.insert(table_name, record)
{:ok, record}
end
def find(key, table_name) do
table_name
|> :ets.lookup(key)
|> case do
[{_, record} | _] ->
{:ok, record}
[] ->
{:error, :not_found}
end
end
def all(table_name) do
table_name
|> :ets.select([{{:_, :_}, [], [:"$_"]}])
|> Enum.map(fn {_, item} -> item end)
end
def clear(table_name) do
true = :ets.delete_all_objects(table_name)
:ok
end
end