"""empty message Revision ID: 7eaec0e12079 Revises: 43afc70a7016 Create Date: 2024-06-18 16:45:06.102210 """ from alembic import op import sqlalchemy as sa from sqlalchemy import text from spiffworkflow_backend.models.db import dialect_name # revision identifiers, used by Alembic. revision = '7eaec0e12079' down_revision = '43afc70a7016' branch_labels = None depends_on = None def delete_orphaned_future_tasks() -> None: # Ensure database connection conn = op.get_bind() dialect = dialect_name() if dialect == "mysql": delete_query = text(""" DELETE future_task FROM future_task LEFT JOIN task ON future_task.guid = task.guid WHERE task.guid IS NULL; """) elif dialect == "postgresql": delete_query = text(""" DELETE FROM future_task USING task WHERE future_task.guid = task.guid AND task.guid IS NULL; """) elif dialect == "sqlite": delete_query = text(""" DELETE FROM future_task WHERE guid NOT IN ( SELECT guid FROM task ); """) else: raise ValueError(f"Unsupported database dialect: {dialect}") # Execute the delete query conn.execute(delete_query) def upgrade() -> None: delete_orphaned_future_tasks() with op.batch_alter_table('future_task', schema=None) as batch_op: batch_op.create_foreign_key('future_task_task_guid_fk', 'task', ['guid'], ['guid'], ondelete='CASCADE') def downgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### with op.batch_alter_table('future_task', schema=None) as batch_op: batch_op.drop_constraint('future_task_task_guid_fk', type_='foreignkey') # ### end Alembic commands ###