- defp restrict_tag(query, %{tag: tag}) when is_binary(tag) do
- restrict_tag(query, %{tag: [tag]})
- end
-
- defp restrict_tag(query, _), do: query
-
- defp restrict_hashtag(query, opts) do
- [tag_any, tag_all, tag_reject] =
- [:tag, :tag_all, :tag_reject]
- |> Enum.map(&opts[&1])
- |> Enum.map(&List.wrap(&1))
-
- has_conditions = Enum.any?([tag_any, tag_all, tag_reject], &Enum.any?(&1))
-
- cond do
- !has_conditions ->
- query
-
- opts[:skip_preload] ->
- raise_on_missing_preload()
-
- true ->
- query
- |> group_by_all_bindings()
- |> join(:left, [_activity, object], hashtag in assoc(object, :hashtags), as: :hashtag)
- |> maybe_restrict_hashtag_any(tag_any)
- |> maybe_restrict_hashtag_all(tag_all)
- |> maybe_restrict_hashtag_reject_any(tag_reject)
- end
+ defp restrict_embedded_tag_any(query, %{tag: tag}) when is_binary(tag) do
+ restrict_embedded_tag_any(query, %{tag: [tag]})