diff --git a/alembic/versions/2b1743f77436_cascade_deleting_flags_when_tokens_are_.py b/alembic/versions/2b1743f77436_cascade_deleting_flags_when_tokens_are_.py new file mode 100644 index 0000000..1c11995 --- /dev/null +++ b/alembic/versions/2b1743f77436_cascade_deleting_flags_when_tokens_are_.py @@ -0,0 +1,46 @@ +"""Cascade deleting flags when tokens are deleted + +Revision ID: 2b1743f77436 +Revises: 5993f9240bcf +Create Date: 2019-01-16 13:38:34.954904 + +""" + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '2b1743f77436' +down_revision = '5993f9240bcf' + + +def upgrade(): + """ Remove the existing foreign key in pull_request_flags.token_id and + re-create it with CASCADE on delete and update. + """ + # alter the constraints + op.drop_constraint('pull_request_flags_token_id_fkey', 'pull_request_flags') + op.create_foreign_key( + u'pull_request_flags_token_id_fkey', + 'pull_request_flags', + 'tokens', + ['token_id'], + ['id'], + ondelete="CASCADE", + onupdate="CASCADE", + ) + + +def downgrade(): + """ Remove the existing foreign key in pull_request_flags.token_id and + re-create it with without specifying the behavior on delete and update. + """ + op.drop_constraint('pull_request_flags_token_id_fkey', 'pull_request_flags') + op.create_foreign_key( + u'pull_request_flags_token_id_fkey', + 'pull_request_flags', + 'tokens', + ['token_id'], + ['id'], + ) diff --git a/pagure/lib/model.py b/pagure/lib/model.py index 793da43..ac8e148 100644 --- a/pagure/lib/model.py +++ b/pagure/lib/model.py @@ -2293,7 +2293,9 @@ class PullRequestFlag(BASE): nullable=False, ) token_id = sa.Column( - sa.String(64), sa.ForeignKey("tokens.id"), nullable=True + sa.String(64), + sa.ForeignKey("tokens.id", ondelete="CASCADE", onupdate="CASCADE"), + nullable=True ) status = sa.Column(sa.String(32), nullable=False) user_id = sa.Column(