shortnr/lib/url/repo/dets.ex

30 lines
529 B
Elixir
Raw Normal View History

2019-12-08 18:44:04 +00:00
defmodule Shortnr.URL.Repo.DETS do
@behaviour Shortnr.URL.Repo
@impl true
def get(key) do
case :dets.lookup(:urls, key) |> List.first() do
{_, url} -> {:ok, url}
nil -> {:ok, nil}
end
2019-12-08 18:44:04 +00:00
end
@impl true
def put(url) do
:ok = :dets.insert(:urls, {url.id, url})
:ok
end
@impl true
def list() do
resp = :dets.select(:urls, [{:"$1", [], [:"$1"]}])
{:ok, resp |> Enum.map(&elem(&1, 1))}
end
@impl true
def delete(key) do
:ok = :dets.delete(:urls, key)
:ok
end
2019-12-08 18:44:04 +00:00
end