diff --git a/api/migrations/versions/2025_06_19_1633-0ab65e1cc7fa_remove_sequence_number_from_workflow_.py b/api/migrations/versions/2025_06_19_1633-0ab65e1cc7fa_remove_sequence_number_from_workflow_.py index 9120149552..5f9c6265b7 100644 --- a/api/migrations/versions/2025_06_19_1633-0ab65e1cc7fa_remove_sequence_number_from_workflow_.py +++ b/api/migrations/versions/2025_06_19_1633-0ab65e1cc7fa_remove_sequence_number_from_workflow_.py @@ -28,8 +28,29 @@ def upgrade(): def downgrade(): # ### commands auto generated by Alembic - please adjust! ### + + # Step 1: Add sequence_number column as nullable first + with op.batch_alter_table('workflow_runs', schema=None) as batch_op: + batch_op.add_column(sa.Column('sequence_number', sa.INTEGER(), autoincrement=False, nullable=True)) + + # Step 2: Populate sequence_number values based on created_at order within each app + # This recreates the original sequence numbering logic + connection = op.get_bind() + connection.execute(sa.text(""" + UPDATE workflow_runs + SET sequence_number = ( + SELECT ROW_NUMBER() OVER ( + PARTITION BY tenant_id, app_id + ORDER BY created_at, id + ) + FROM workflow_runs wr2 + WHERE wr2.id = workflow_runs.id + ) + """)) + + # Step 3: Make the column NOT NULL and add the index with op.batch_alter_table('workflow_runs', schema=None) as batch_op: - batch_op.add_column(sa.Column('sequence_number', sa.INTEGER(), autoincrement=False, nullable=False)) + batch_op.alter_column('sequence_number', nullable=False) batch_op.create_index(batch_op.f('workflow_run_tenant_app_sequence_idx'), ['tenant_id', 'app_id', 'sequence_number'], unique=False) # ### end Alembic commands ###