Chats: Add cascading delete on both referenced users.

Also remove the now-superfluous join in the chat controller,
which was only used to filter out these cases.
This commit is contained in:
lain 2020-08-31 16:48:17 +02:00
commit 0b621a834a
3 changed files with 45 additions and 3 deletions

View file

@ -0,0 +1,22 @@
defmodule Pleroma.Repo.Migrations.ChatConstraints do
use Ecto.Migration
def change do
remove_orphans = """
delete from chats where not exists(select id from users where ap_id = chats.recipient);
"""
execute(remove_orphans)
drop(constraint(:chats, "chats_user_id_fkey"))
alter table(:chats) do
modify(:user_id, references(:users, type: :uuid, on_delete: :delete_all))
modify(
:recipient,
references(:users, column: :ap_id, type: :string, on_delete: :delete_all)
)
end
end
end