[#3213] Refactoring of HashtagsTableMigrator. Hashtag timeline performance optimizati...
[akkoma] / lib / pleroma / migrators / hashtags_table_migrator / state.ex
1 defmodule Pleroma.Migrators.HashtagsTableMigrator.State do
2 use Agent
3
4 @init_state %{}
5 @reg_name {:global, __MODULE__}
6
7 def start_link(_) do
8 Agent.start_link(fn -> @init_state end, name: @reg_name)
9 end
10
11 def get do
12 Agent.get(@reg_name, & &1)
13 end
14
15 def put(key, value) do
16 Agent.update(@reg_name, fn state ->
17 Map.put(state, key, value)
18 end)
19 end
20
21 def increment(key, increment \\ 1) do
22 Agent.update(@reg_name, fn state ->
23 updated_value = (state[key] || 0) + increment
24 Map.put(state, key, updated_value)
25 end)
26 end
27 end