diff --git a/lib/graphql/resolvers/event.ex b/lib/graphql/resolvers/event.ex index 40d8dd906..31c2c3d4e 100644 --- a/lib/graphql/resolvers/event.ex +++ b/lib/graphql/resolvers/event.ex @@ -222,26 +222,6 @@ defmodule Mobilizon.GraphQL.Resolvers.Event do {:ok, events} end - @spec organizer_next_public_event(Event.t()) :: list(Event.t()) - defp organizer_next_public_event(%Event{attributed_to: %Actor{} = group, uuid: uuid}) do - [Events.get_upcoming_public_event_for_actor(group, uuid)] - |> Enum.filter(&is_map/1) - end - - defp organizer_next_public_event(%Event{organizer_actor: %Actor{} = profile, uuid: uuid}) do - [Events.get_upcoming_public_event_for_actor(profile, uuid)] - |> Enum.filter(&is_map/1) - end - - @spec similar_events_common_tags(list(Event.t()), Event.t()) :: list(Event.t()) - defp similar_events_common_tags(events, %Event{tags: tags, uuid: uuid}) do - events - |> Enum.concat(Events.list_events_by_tags(tags, @number_of_related_events)) - |> Enum.filter(fn event -> event.uuid != uuid end) - # uniq_by : It's possible event_from_same_actor is inside events_from_tags - |> uniq_events() - end - @spec add_latest_events(list(Event.t())) :: list(Event.t()) defp add_latest_events(events) do if @number_of_related_events - length(events) > 0 do diff --git a/lib/mobilizon/events/events.ex b/lib/mobilizon/events/events.ex index 9bef1512c..07bf63af9 100644 --- a/lib/mobilizon/events/events.ex +++ b/lib/mobilizon/events/events.ex @@ -1691,11 +1691,12 @@ defmodule Mobilizon.Events do def related_events(%Event{ id: event_id, tags: tags, - physical_address: %Address{geom: geom}, + physical_address: physical_address, category: category, language: language }) do event_tags_ids = Enum.map(tags, & &1.id) + geom = if is_nil(physical_address), do: nil, else: physical_address.geom Event |> distinct([e], e.id) @@ -1704,14 +1705,14 @@ defmodule Mobilizon.Events do |> where( [e, et, a], fragment( - "(? = ?)::int * 5 + (? = ALL(?))::int * 2 + (? = ?)::int + (? is null or ST_DWithin(?::geography, ?::geography, ?::float))::int * 2 > ?", + "(? = ?)::int * 5 + (? = ALL(?))::int * 2 + (? = ?)::int + (?::geography is null or ST_DWithin(?::geography, ?::geography, ?::float))::int * 2 > ?", e.language, ^language, et.tag_id, ^event_tags_ids, e.category, ^category, - a.geom, + ^geom, ^geom, a.geom, 5000, @@ -1723,14 +1724,14 @@ defmodule Mobilizon.Events do |> order_by( [e, et, a], fragment( - "(? = ?)::int * 5 + (? = ALL(?))::int * 2 + (? = ?)::int + (? is null or ST_DWithin(?::geography, ?::geography, ?::float))::int * 2 DESC", + "(? = ?)::int * 5 + (? = ALL(?))::int * 2 + (? = ?)::int + (?::geography is null or ST_DWithin(?::geography, ?::geography, ?::float))::int * 2 DESC", e.language, ^language, et.tag_id, ^event_tags_ids, e.category, ^category, - a.geom, + ^geom, ^geom, a.geom, 5000