Add local groups as statistics
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -603,6 +603,25 @@ defmodule Mobilizon.Actors do
|
||||
"""
|
||||
def delete_group!(%Actor{type: :Group} = group), do: Repo.delete!(group)
|
||||
|
||||
@doc """
|
||||
Counts the local groups
|
||||
"""
|
||||
@spec count_local_groups :: integer()
|
||||
def count_local_groups do
|
||||
groups_query()
|
||||
|> filter_local()
|
||||
|> Repo.aggregate(:count)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Counts all the groups
|
||||
"""
|
||||
@spec count_groups :: integer()
|
||||
def count_groups do
|
||||
groups_query()
|
||||
|> Repo.aggregate(:count)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Lists the groups.
|
||||
"""
|
||||
|
||||
@@ -288,6 +288,12 @@ defmodule Mobilizon.Discussions do
|
||||
@spec count_local_comments :: integer
|
||||
def count_local_comments, do: Repo.one(count_local_comments_query())
|
||||
|
||||
@doc """
|
||||
Counts all comments.
|
||||
"""
|
||||
@spec count_comments :: integer
|
||||
def count_comments, do: Repo.one(count_comments_query())
|
||||
|
||||
def get_discussion(discussion_id) do
|
||||
Discussion
|
||||
|> Repo.get(discussion_id)
|
||||
@@ -424,6 +430,15 @@ defmodule Mobilizon.Discussions do
|
||||
)
|
||||
end
|
||||
|
||||
@spec count_comments_query :: Ecto.Query.t()
|
||||
defp count_comments_query do
|
||||
from(
|
||||
c in Comment,
|
||||
select: count(c.id),
|
||||
where: c.visibility in ^@public_visibility
|
||||
)
|
||||
end
|
||||
|
||||
@spec preload_for_comment(Ecto.Query.t()) :: Ecto.Query.t()
|
||||
defp preload_for_comment(query), do: preload(query, ^@comment_preloads)
|
||||
end
|
||||
|
||||
@@ -491,6 +491,17 @@ defmodule Mobilizon.Events do
|
||||
|> Repo.one()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Counts all events.
|
||||
"""
|
||||
@spec count_events :: integer
|
||||
def count_events do
|
||||
count_events_query()
|
||||
|> filter_unlisted_and_public_visibility()
|
||||
|> filter_draft()
|
||||
|> Repo.one()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Builds a page struct for events by their name.
|
||||
"""
|
||||
@@ -1417,6 +1428,11 @@ defmodule Mobilizon.Events do
|
||||
from(e in Event, select: count(e.id), where: e.local == ^true)
|
||||
end
|
||||
|
||||
@spec count_events_query :: Ecto.Query.t()
|
||||
defp count_events_query do
|
||||
from(e in Event, select: count(e.id))
|
||||
end
|
||||
|
||||
@spec tag_by_slug_query(String.t()) :: Ecto.Query.t()
|
||||
defp tag_by_slug_query(slug) do
|
||||
from(t in Tag, where: t.slug == ^slug)
|
||||
@@ -1537,7 +1553,7 @@ defmodule Mobilizon.Events do
|
||||
from(
|
||||
p in Participant,
|
||||
where: p.event_id == ^event_id,
|
||||
preload: [:actor]
|
||||
preload: [:actor, :event]
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user