Files
phoenix-clip/lib/clip/currents.ex
2020-08-10 18:39:04 +02:00

41 lines
931 B
Elixir

defmodule Clip.Currents do
use GenServer
require Logger
@purge_interval :timer.minutes(60)
def start_link(_) do
GenServer.start_link(__MODULE__, %{}, name: ClipCurrents)
end
def init(opts) do
:ets.new(:users_clips, [:set, :named_table, :public])
state = %{
interval: opts[:purge_interval] || @purge_interval,
timer: nil
}
{:ok, schedule_purge(state)}
end
def set(email_addr, value) do
:ets.insert(:users_clips, {email_addr, value})
:ok
end
def get(email_addr) do
cur_val = case :ets.lookup(:users_clips, email_addr) do
[{^email_addr, value}] -> value
[] -> ""
end
{:ok, cur_val}
end
def handle_info(:purge, state) do
Logger.info("should purge old entries but doesn't, yet")
{:noreply, schedule_purge(state)}
end
defp schedule_purge(state) do
%{state | timer: Process.send_after(self(), :purge, state.interval)}
end
end