|
- defmodule Pleroma.Repo.Migrations.DeleteNotificationWithoutActivity do
- use Ecto.Migration
-
- import Ecto.Query
- alias Pleroma.Repo
-
- def up do
- from(
- q in Pleroma.Notification,
- left_join: c in assoc(q, :activity),
- select: %{id: type(q.id, :integer)},
- where: is_nil(c.id)
- )
- |> Repo.chunk_stream(1_000, :batches)
- |> Stream.each(fn records ->
- notification_ids = Enum.map(records, fn %{id: id} -> id end)
-
- Repo.delete_all(
- from(n in "notifications",
- where: n.id in ^notification_ids
- )
- )
- end)
- |> Stream.run()
- end
-
- def down do
- :ok
- end
- end
|