"""add_primary_and_featured_artists_separation Revision ID: 1cde43335ff9 Revises: ab2eb7c0bd3b Create Date: 2020-07-09 09:21:45.293910 """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = '1cde43335ff9' down_revision = 'ab2eb7c0bd3b' branch_labels = None depends_on = None def upgrade(): op.drop_constraint('fk_ProjectTargetItem_target_item_id_Polymorphable', 'ProjectTargetItem', type_='foreignkey') op.alter_column('ProjectTargetItem', 'target_item_id', nullable=False, new_column_name='entity_id') op.create_foreign_key(op.f('fk_ProjectTargetItem_entity_id_Polymorphable'), 'ProjectTargetItem', 'Polymorphable', ['entity_id'], ['id'], ondelete='CASCADE') op.add_column('ProjectTargetItem', sa.Column('entity_type', sa.BigInteger(), nullable=True)) bind = op.get_bind() target_items = bind.execute(''' SELECT "ProjectTargetItem".id, "Polymorphable".type FROM "ProjectTargetItem" JOIN "Polymorphable" ON "ProjectTargetItem".entity_id = "Polymorphable".id ''') for item in target_items: id = item[0] type = 0 if item[1] == 'Artist' else 3 bind.execute(f'''UPDATE "ProjectTargetItem" SET entity_type={type} WHERE id={id}''') def downgrade(): # ### commands auto generated by Alembic - please adjust! ### op.drop_constraint(op.f('fk_ProjectTargetItem_entity_id_Polymorphable'), 'ProjectTargetItem', type_='foreignkey') op.alter_column('ProjectTargetItem', 'entity_id', nullable=False, new_column_name='target_item_id') op.create_foreign_key('fk_ProjectTargetItem_target_item_id_Polymorphable', 'ProjectTargetItem', 'Polymorphable', ['target_item_id'], ['id'], ondelete='CASCADE') op.drop_column('ProjectTargetItem', 'entity_type') # ### end Alembic commands ###