projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'chore/config-descriptions' into 'develop'
[akkoma]
/
lib
/
pleroma
/
stats.ex
diff --git
a/lib/pleroma/stats.ex
b/lib/pleroma/stats.ex
index 8154a09b754a75b36d72b8e01700f0f2612cec7f..cf590fb0158abedf9d2e80dda0db9d8262a61a65 100644
(file)
--- a/
lib/pleroma/stats.ex
+++ b/
lib/pleroma/stats.ex
@@
-9,22
+9,43
@@
defmodule Pleroma.Stats do
use GenServer
use GenServer
- @interval 1000 * 60 * 60
+ @init_state %{
+ peers: [],
+ stats: %{
+ domain_count: 0,
+ status_count: 0,
+ user_count: 0
+ }
+ }
def start_link(_) do
def start_link(_) do
- GenServer.start_link(__MODULE__, initial_data(), name: __MODULE__)
+ GenServer.start_link(
+ __MODULE__,
+ @init_state,
+ name: __MODULE__
+ )
end
end
+ @doc "Performs update stats"
def force_update do
GenServer.call(__MODULE__, :force_update)
end
def force_update do
GenServer.call(__MODULE__, :force_update)
end
+ @doc "Performs collect stats"
+ def do_collect do
+ GenServer.cast(__MODULE__, :run_update)
+ end
+
+ @doc "Returns stats data"
+ @spec get_stats() :: %{domain_count: integer(), status_count: integer(), user_count: integer()}
def get_stats do
%{stats: stats} = GenServer.call(__MODULE__, :get_state)
stats
end
def get_stats do
%{stats: stats} = GenServer.call(__MODULE__, :get_state)
stats
end
+ @doc "Returns list peers"
+ @spec get_peers() :: list(String.t())
def get_peers do
%{peers: peers} = GenServer.call(__MODULE__, :get_state)
def get_peers do
%{peers: peers} = GenServer.call(__MODULE__, :get_state)
@@
-32,7
+53,6
@@
defmodule Pleroma.Stats do
end
def init(args) do
end
def init(args) do
- Process.send(self(), :run_update, [])
{:ok, args}
end
{:ok, args}
end
@@
-45,17
+65,12
@@
defmodule Pleroma.Stats do
{:reply, state, state}
end
{:reply, state, state}
end
- def handle_
info
(:run_update, _state) do
+ def handle_
cast
(:run_update, _state) do
new_stats = get_stat_data()
new_stats = get_stat_data()
- Process.send_after(self(), :run_update, @interval)
{:noreply, new_stats}
end
{:noreply, new_stats}
end
- defp initial_data do
- %{peers: [], stats: %{}}
- end
-
defp get_stat_data do
peers =
from(
defp get_stat_data do
peers =
from(
@@
-74,7
+89,11
@@
defmodule Pleroma.Stats do
%{
peers: peers,
%{
peers: peers,
- stats: %{domain_count: domain_count, status_count: status_count, user_count: user_count}
+ stats: %{
+ domain_count: domain_count,
+ status_count: status_count,
+ user_count: user_count
+ }
}
end
end
}
end
end