- status_query = from(u in User.local_user_query,
- select: fragment("sum((?->>'note_count')::int)", u.info))
- status_count = Repo.one(status_query)
- user_count = Repo.aggregate(User.local_user_query, :count, :id)
- Agent.update(__MODULE__, fn _ ->
- {peers, %{domain_count: domain_count, status_count: status_count, user_count: user_count}}
- end)
+
+ status_count = Repo.aggregate(User.Query.build(%{local: true}), :sum, :note_count)
+
+ users_query =
+ from(u in User,
+ where: u.deactivated != true,
+ where: u.local == true,
+ where: not is_nil(u.nickname),
+ where: not u.invisible
+ )
+
+ user_count = Repo.aggregate(users_query, :count, :id)
+
+ %{
+ peers: peers,
+ stats: %{
+ domain_count: domain_count,
+ status_count: status_count || 0,
+ user_count: user_count
+ }
+ }
+ end
+
+ def get_status_visibility_count(instance \\ nil) do
+ if is_nil(instance) do
+ CounterCache.get_sum()
+ else
+ CounterCache.get_by_instance(instance)
+ end