Нуждата от ETS
defmodule RequestsPerUser do
use GenServer
def start_link do
GenServer.start_link(__MODULE__, nil, name: __MODULE__)
end
def init(_), do: {:ok, %{}}
def update(user) do
GenServer.cast(__MODULE__, {:update, user})
end
def get(user), do: GenServer.call(__MODULE__, {:get, user})
def handle_call({:get, user}, _, state) do
{:reply, Map.get(state, user, 0), state}
end
def handle_cast({:update, user}, state) do
{:noreply, Map.update(state, user, 1, & &1 + 1)}
end
end