diff --git a/lib/pleroma/stats.ex b/lib/pleroma/stats.ex index 88740d155..7bbe089f8 100644 --- a/lib/pleroma/stats.ex +++ b/lib/pleroma/stats.ex @@ -10,6 +10,7 @@ defmodule Pleroma.Stats do alias Pleroma.CounterCache alias Pleroma.Repo alias Pleroma.User + alias Pleroma.Instances.Instance @interval :timer.seconds(300) @@ -66,14 +67,13 @@ def get_peers do } } def calculate_stat_data do + # instances table has an unique constraint on the host column peers = from( - u in User, - select: fragment("distinct split_part(?, '@', 2)", u.nickname), - where: u.local != ^true + i in Instance, + select: i.host ) |> Repo.all() - |> Enum.filter(& &1) domain_count = Enum.count(peers) diff --git a/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs index 7b400d1ee..39e9629eb 100644 --- a/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs +++ b/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs @@ -61,7 +61,9 @@ test "get instance stats", %{conn: conn} do {:ok, _user2} = User.set_activation(user2, false) insert(:user, %{local: false, nickname: "u@peer1.com"}) + insert(:instance, %{domain: "peer1.com"}) insert(:user, %{local: false, nickname: "u@peer2.com"}) + insert(:instance, %{domain: "peer2.com"}) {:ok, _} = Pleroma.Web.CommonAPI.post(user, %{status: "cofe"}) @@ -81,7 +83,9 @@ test "get instance stats", %{conn: conn} do test "get peers", %{conn: conn} do insert(:user, %{local: false, nickname: "u@peer1.com"}) + insert(:instance, %{domain: "peer1.com"}) insert(:user, %{local: false, nickname: "u@peer2.com"}) + insert(:instance, %{domain: "peer2.com"}) Pleroma.Stats.force_update()