From ffd53ab984020af4c6cc3bcdc1d87c958d27843e Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Dec 06 2017 09:50:07 +0000 Subject: Add migration to fix the project_from_id foreign key in pull_requests This way, if the project the PR originates from is deleted, the PR remains and remains open. Fixes https://pagure.io/pagure/issue/2729 Signed-off-by: Pierre-Yves Chibon --- diff --git a/alembic/versions/61ac23e35f86_fix_pr_project_from_key.py b/alembic/versions/61ac23e35f86_fix_pr_project_from_key.py new file mode 100644 index 0000000..a7bb5b8 --- /dev/null +++ b/alembic/versions/61ac23e35f86_fix_pr_project_from_key.py @@ -0,0 +1,54 @@ +"""Fix pr project_from key + +Revision ID: 61ac23e35f86 +Revises: 47f5fab6f46a +Create Date: 2017-12-05 16:59:17.117199 + +""" + +# revision identifiers, used by Alembic. +revision = '61ac23e35f86' +down_revision = '47f5fab6f46a' + +from alembic import op +import sqlalchemy as sa + + +def upgrade(): + """ Alter the pull_requests table to update the foreign key to set null + on delete. + """ + + op.drop_constraint( + 'pull_requests_project_id_from_fkey', + 'pull_requests', + type_='foreignkey') + op.create_foreign_key( + name='pull_requests_project_id_from_fkey', + source_table='pull_requests', + referent_table='projects', + local_cols=['project_from_id'], + remote_cols=['id'], + onupdate='cascade', + ondelete='set null', + ) + + +def downgrade(): + """ Alter the pull_requests table to update the foreign key to cascade + on delete. + """ + + op.drop_constraint( + 'pull_requests_project_id_from_fkey', + 'pull_requests', + type_='foreignkey') + op.create_foreign_key( + name='pull_requests_project_id_from_fkey', + source_table='pull_requests', + referent_table='projects', + local_cols=['project_from_id'], + remote_cols=['id'], + onupdate='cascade', + ondelete='cascade', + )