diff options
author | lain <lain@soykaf.club> | 2020-09-16 12:22:48 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-09-16 12:22:48 +0000 |
commit | 6b088ed76a7c4b895c4bff4113e291bd53209273 (patch) | |
tree | 9d7f7737f6cff97984ee0cc83930843bac02d655 /priv | |
parent | cfad4f46b2d53f67722f7b8046b673d60a9cefcd (diff) | |
parent | 599f8bb152ca0669d17baa5f313f00f0791209b6 (diff) |
Merge branch 'issue/2089' into 'develop'
[#2089] fix notifications
See merge request pleroma/pleroma!3000
Diffstat (limited to 'priv')
-rw-r--r-- | priv/repo/migrations/20200914105638_delete_notification_without_activity.exs | 30 | ||||
-rw-r--r-- | priv/repo/migrations/20200914105800_add_notification_constraints.exs | 23 |
2 files changed, 53 insertions, 0 deletions
diff --git a/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs b/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs new file mode 100644 index 000000000..9333fc5a1 --- /dev/null +++ b/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs @@ -0,0 +1,30 @@ +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 diff --git a/priv/repo/migrations/20200914105800_add_notification_constraints.exs b/priv/repo/migrations/20200914105800_add_notification_constraints.exs new file mode 100644 index 000000000..a65c35fd0 --- /dev/null +++ b/priv/repo/migrations/20200914105800_add_notification_constraints.exs @@ -0,0 +1,23 @@ +defmodule Pleroma.Repo.Migrations.AddNotificationConstraints do + use Ecto.Migration + + def up do + drop(constraint(:notifications, "notifications_activity_id_fkey")) + + alter table(:notifications) do + modify(:activity_id, references(:activities, type: :uuid, on_delete: :delete_all), + null: false + ) + end + end + + def down do + drop(constraint(:notifications, "notifications_activity_id_fkey")) + + alter table(:notifications) do + modify(:activity_id, references(:activities, type: :uuid, on_delete: :delete_all), + null: true + ) + end + end +end |