forked from AkkomaGang/akkoma
Stats: Ignore internal users for user count.
This commit is contained in:
parent
69ecc39038
commit
8b88e2a6e2
2 changed files with 26 additions and 6 deletions
|
@ -45,11 +45,11 @@ def get_peers do
|
||||||
end
|
end
|
||||||
|
|
||||||
def init(_args) do
|
def init(_args) do
|
||||||
{:ok, get_stat_data()}
|
{:ok, calculate_stat_data()}
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_call(:force_update, _from, _state) do
|
def handle_call(:force_update, _from, _state) do
|
||||||
new_stats = get_stat_data()
|
new_stats = calculate_stat_data()
|
||||||
{:reply, new_stats, new_stats}
|
{:reply, new_stats, new_stats}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -58,12 +58,12 @@ def handle_call(:get_state, _from, state) do
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_cast(:run_update, _state) do
|
def handle_cast(:run_update, _state) do
|
||||||
new_stats = get_stat_data()
|
new_stats = calculate_stat_data()
|
||||||
|
|
||||||
{:noreply, new_stats}
|
{:noreply, new_stats}
|
||||||
end
|
end
|
||||||
|
|
||||||
defp get_stat_data do
|
def calculate_stat_data do
|
||||||
peers =
|
peers =
|
||||||
from(
|
from(
|
||||||
u in User,
|
u in User,
|
||||||
|
@ -77,7 +77,16 @@ defp get_stat_data do
|
||||||
|
|
||||||
status_count = Repo.aggregate(User.Query.build(%{local: true}), :sum, :note_count)
|
status_count = Repo.aggregate(User.Query.build(%{local: true}), :sum, :note_count)
|
||||||
|
|
||||||
user_count = Repo.aggregate(User.Query.build(%{local: true, active: true}), :count, :id)
|
users_query =
|
||||||
|
from(u in User,
|
||||||
|
where: u.deactivated != true,
|
||||||
|
where: u.local == true,
|
||||||
|
where: not is_nil(u.nickname),
|
||||||
|
where: fragment("? not like 'internal.%'", u.nickname),
|
||||||
|
where: fragment("? not like '%/relay'", u.ap_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
user_count = Repo.aggregate(users_query, :count, :id)
|
||||||
|
|
||||||
%{
|
%{
|
||||||
peers: peers,
|
peers: peers,
|
||||||
|
|
|
@ -2,11 +2,22 @@
|
||||||
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.StateTest do
|
defmodule Pleroma.StatsTest do
|
||||||
use Pleroma.DataCase
|
use Pleroma.DataCase
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
|
|
||||||
|
describe "user count" do
|
||||||
|
test "it ignores internal users" do
|
||||||
|
_user = insert(:user, local: true)
|
||||||
|
_internal = insert(:user, local: true, nickname: nil)
|
||||||
|
_internal = insert(:user, local: true, nickname: "internal.dude")
|
||||||
|
_internal = Pleroma.Web.ActivityPub.Relay.get_actor()
|
||||||
|
|
||||||
|
assert match?(%{stats: %{user_count: 1}}, Pleroma.Stats.calculate_stat_data())
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "status visibility count" do
|
describe "status visibility count" do
|
||||||
test "on new status" do
|
test "on new status" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
Loading…
Reference in a new issue