diff options
| -rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 10 | ||||
| -rw-r--r-- | priv/repo/migrations/20180617221540_create_activities_in_reply_to_index.exs | 8 | 
2 files changed, 18 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 267427a23..567ee3115 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -430,6 +430,15 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do    defp restrict_media(query, _), do: query +  defp restrict_replies(query, %{"exclude_replies" => val}) when val == "true" or val == "1" do +    from( +      activity in query, +      where: fragment("?->'object'->>'inReplyTo' is null", activity.data) +    ) +  end + +  defp restrict_replies(query, _), do: query +    # Only search through last 100_000 activities by default    defp restrict_recent(query, %{"whole_db" => true}), do: query @@ -487,6 +496,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do      |> restrict_blocked(opts)      |> restrict_media(opts)      |> restrict_visibility(opts) +    |> restrict_replies(opts)    end    def fetch_activities(recipients, opts \\ %{}) do diff --git a/priv/repo/migrations/20180617221540_create_activities_in_reply_to_index.exs b/priv/repo/migrations/20180617221540_create_activities_in_reply_to_index.exs new file mode 100644 index 000000000..1fee6fd7a --- /dev/null +++ b/priv/repo/migrations/20180617221540_create_activities_in_reply_to_index.exs @@ -0,0 +1,8 @@ +defmodule Pleroma.Repo.Migrations.CreateActivitiesInReplyToIndex do +  use Ecto.Migration +  @disable_ddl_transaction true + +  def change do +    create index(:activities, ["(data->'object'->>'inReplyTo')"], concurrently: true, name: :activities_in_reply_to) +  end +end  | 
