Current section
Files
Jump to
Current section
Files
lib/distributed_ecs/store_ets.ex
defmodule DistributedEcs.Store.Ets do
@behaviour DistributedEcs.Store
use GenServer
def start_link(opts \\ %{}) do
GenServer.start_link(__MODULE__, opts, name: __MODULE__)
end
def init(opts) do
:ets.new(__MODULE__, [:named_table, :protected, :set])
{:ok, opts}
end
def save_entity(entity) do
GenServer.call(__MODULE__, {:save_entity, entity})
end
def get_entity(id) do
[[entity]] = :ets.match(__MODULE__, {{:entity, id}, :"$1"})
{:ok, entity}
end
def handle_call({:save_entity, entity}, _from, state) do
:ets.insert(__MODULE__, {{:entity, entity.id}, entity})
{:reply, {:ok, entity}, state}
end
end