1
0
mirror of https://github.com/mgerb/classic-wow-forums synced 2026-01-10 09:02:50 +00:00
Files
classic-wow-forums/lib/myapp/view_counter.ex

21 lines
544 B
Elixir

defmodule MyApp.ViewCounter do
alias MyApp.Data
# cache end points for 5 minutes based on the browser fingerprint
@spec thread_view_count(String.t, integer) :: {:error, String.t} | {any, boolean}
def thread_view_count(fingerprint, thread_id) do
key = "#{fingerprint}:#{thread_id}"
case Cachex.get(:myapp, key) do
{:ok, _} -> {:error, "Already viewed."}
{:missing, _} ->
{1, nil} = Data.Thread.update_view_count(thread_id)
Cachex.set(:myapp, key, true, ttl: :timer.minutes(5))
end
end
end