Add participant info in event search results

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2022-09-26 10:29:20 +02:00
parent a37bab3b84
commit 6f7d5f649b
9 changed files with 145 additions and 29 deletions

View File

@@ -541,7 +541,7 @@ defmodule Mobilizon.Events do
|> filter_draft()
|> filter_local_or_from_followed_instances_events()
|> filter_public_visibility()
|> event_order_begins_on_asc()
|> event_order(args.sort_by)
|> Page.build_page(page, limit, :begins_on)
end
@@ -1272,15 +1272,14 @@ defmodule Mobilizon.Events do
end
end
@spec events_for_search_query(String.t()) :: Ecto.Query.t()
defp events_for_search_query("") do
Event
|> distinct([e], asc: e.begins_on, asc: e.id)
end
# @spec events_for_search_query(String.t()) :: Ecto.Query.t()
# defp events_for_search_query("") do
# Event
# |> join: rank in fragment("")
# end
defp events_for_search_query(search_string) do
from(event in Event,
distinct: [asc: event.begins_on, asc: event.id],
join: id_and_rank in matching_event_ids_and_ranks(search_string),
on: id_and_rank.id == event.id
)
@@ -1820,6 +1819,13 @@ defmodule Mobilizon.Events do
|> event_order_begins_on_asc()
end
defp event_order(query, :match_desc), do: order_by(query, [e, f], desc: f.rank, asc: e.begins_on)
defp event_order(query, :start_time_desc), do: order_by(query, [e], asc: e.begins_on)
defp event_order(query, :created_at_desc), do: order_by(query, [e], desc: e.publish_at)
defp event_order(query, :created_at_asc), do: order_by(query, [e], asc: e.publish_at)
defp event_order(query, :participant_count_desc), do: order_by(query, [e], fragment("participant_stats->>'participant' DESC"))
defp event_order(query, _), do: query
defp event_order_begins_on_asc(query),
do: order_by(query, [e], asc: e.begins_on)