diff options
| author | rinpatch <rinpatch@sdf.org> | 2019-12-21 11:49:35 +0000 | 
|---|---|---|
| committer | rinpatch <rinpatch@sdf.org> | 2019-12-21 11:49:35 +0000 | 
| commit | 7447c80e33a7d54c3d9f03f5c0be3fb738f1318b (patch) | |
| tree | c1ad7b149725b6df8ec5f4de7d25ab1e50d35020 /lib | |
| parent | 0193b0862fd8a7bdaef7fe6ebb9f499a086ca761 (diff) | |
| parent | e71a13ad57d2604b45c0beb278f47d25c284783a (diff) | |
| download | pleroma-7447c80e33a7d54c3d9f03f5c0be3fb738f1318b.tar.gz pleroma-7447c80e33a7d54c3d9f03f5c0be3fb738f1318b.zip  | |
Merge branch 'revert-a54aa5af' into 'develop'
Revert "Merge branch 'feature/status-counts-by-scope' into 'develop'"
Closes #1488
See merge request pleroma/pleroma!2083
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/stats.ex | 72 | 
1 files changed, 5 insertions, 67 deletions
diff --git a/lib/pleroma/stats.ex b/lib/pleroma/stats.ex index 97e8b1990..8154a09b7 100644 --- a/lib/pleroma/stats.ex +++ b/lib/pleroma/stats.ex @@ -3,15 +3,11 @@  # SPDX-License-Identifier: AGPL-3.0-only  defmodule Pleroma.Stats do -  use GenServer -    import Ecto.Query - -  alias Pleroma.Object    alias Pleroma.Repo    alias Pleroma.User -  require Pleroma.Constants +  use GenServer    @interval 1000 * 60 * 60 @@ -60,7 +56,7 @@ defmodule Pleroma.Stats do      %{peers: [], stats: %{}}    end -  def get_stat_data do +  defp get_stat_data do      peers =        from(          u in User, @@ -72,71 +68,13 @@ defmodule Pleroma.Stats do      domain_count = Enum.count(peers) +    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)      %{        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 - -  defp status_count do -    %{ -      all: all_statuses_query() |> Repo.aggregate(:count, :id), -      public: public_statuses_query() |> Repo.aggregate(:count, :id), -      unlisted: unlisted_statuses_query() |> Repo.aggregate(:count, :id), -      direct: direct_statuses_query() |> Repo.aggregate(:count, :id), -      private: private_statuses_query() |> Repo.aggregate(:count, :id) -    } -  end - -  defp all_statuses_query do -    from(o in Object, where: fragment("(?)->>'type' = 'Note'", o.data)) -  end - -  def public_statuses_query do -    from(o in Object, -      where: fragment("(?)->'to' \\? ?", o.data, ^Pleroma.Constants.as_public()) -    ) -  end - -  def unlisted_statuses_query do -    from(o in Object, -      where: not fragment("(?)->'to' \\? ?", o.data, ^Pleroma.Constants.as_public()), -      where: fragment("(?)->'cc' \\? ?", o.data, ^Pleroma.Constants.as_public()) -    ) -  end - -  def direct_statuses_query do -    private_statuses_ids = from(p in private_statuses_query(), select: p.id) |> Repo.all() - -    from(o in Object, -      where: -        fragment( -          "? \\? 'directMessage' AND (?->>'directMessage')::boolean = true", -          o.data, -          o.data -        ) or -          (not fragment("(?)->'to' \\? ?", o.data, ^Pleroma.Constants.as_public()) and -             not fragment("(?)->'cc' \\? ?", o.data, ^Pleroma.Constants.as_public()) and -             o.id not in ^private_statuses_ids) -    ) -  end - -  def private_statuses_query do -    from(o in subquery(recipients_query()), -      where: ilike(o.recipients, "%/followers%") -    ) -  end - -  defp recipients_query do -    from(o in Object, -      select: %{ -        id: o.id, -        recipients: fragment("jsonb_array_elements_text((?)->'to')", o.data) -      }, -      where: not fragment("(?)->'to' \\? ?", o.data, ^Pleroma.Constants.as_public()), -      where: not fragment("(?)->'cc' \\? ?", o.data, ^Pleroma.Constants.as_public()) -    ) -  end  end  | 
