defp restrict_actor(query, _), do: query
defp restrict_type(query, %{"type" => type}) when is_binary(type) do
- restrict_type(query, %{"type" => [type]})
+ from(activity in query, where: fragment("?->>'type' = ?", activity.data, ^type))
end
defp restrict_type(query, %{"type" => type}) do
--- /dev/null
+defmodule Pleroma.Repo.Migrations.AddCorrectDMIndex do
+ use Ecto.Migration
+ @disable_ddl_transaction true
+
+ def up do
+ drop_if_exists(
+ index(:activities, ["activity_visibility(actor, recipients, data)"],
+ name: :activities_visibility_index
+ )
+ )
+
+ create(
+ index(:activities, ["activity_visibility(actor, recipients, data)", "id DESC NULLS LAST"],
+ name: :activities_visibility_index,
+ concurrently: true,
+ where: "data->>'type' = 'Create'"
+ )
+ )
+ end
+
+ def down do
+ drop(
+ index(:activities, ["activity_visibility(actor, recipients, data)", "id DESC"],
+ name: :activities_visibility_index,
+ concurrently: true,
+ where: "data->>'type' = 'Create'"
+ )
+ )
+ end
+end