Update stats admin endpoint

This commit is contained in:
Roman Chvanikov 2020-05-09 11:30:37 +03:00
commit cbe383ae83
6 changed files with 87 additions and 24 deletions

View file

@ -40,7 +40,7 @@ defmodule Pleroma.CounterCache do
end
end
def get_as_map() do
def get_sum() do
CounterCache
|> select([c], %{
"public" => sum(c.public),
@ -49,6 +49,10 @@ defmodule Pleroma.CounterCache do
"direct" => sum(c.direct)
})
|> Repo.one()
|> Enum.map(fn {visibility, dec_count} ->
{visibility, Decimal.to_integer(dec_count)}
end)
|> Enum.into(%{})
end
def set(instance, values) do

View file

@ -97,14 +97,11 @@ defmodule Pleroma.Stats do
}
end
def get_status_visibility_count do
counter_cache = CounterCache.get_as_map()
%{
public: counter_cache["status_visibility_public"] || 0,
unlisted: counter_cache["status_visibility_unlisted"] || 0,
private: counter_cache["status_visibility_private"] || 0,
direct: counter_cache["status_visibility_direct"] || 0
}
def get_status_visibility_count(instance \\ nil) do
if is_nil(instance) do
CounterCache.get_sum()
else
CounterCache.get_by_instance(instance)
end
end
end

View file

@ -1122,11 +1122,10 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
end
end
def stats(conn, _) do
count = Stats.get_status_visibility_count()
def stats(conn, params) do
counters = Stats.get_status_visibility_count(params["instance"])
conn
|> json(%{"status_visibility" => count})
json(conn, %{"status_visibility" => counters})
end
defp errors(conn, {:error, :not_found}) do