|
|
|
@ -28,8 +28,29 @@ def upgrade():
|
|
|
|
|
|
|
|
|
|
|
|
def downgrade():
|
|
|
|
def downgrade():
|
|
|
|
# ### commands auto generated by Alembic - please adjust! ###
|
|
|
|
# ### 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:
|
|
|
|
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)
|
|
|
|
batch_op.create_index(batch_op.f('workflow_run_tenant_app_sequence_idx'), ['tenant_id', 'app_id', 'sequence_number'], unique=False)
|
|
|
|
|
|
|
|
|
|
|
|
# ### end Alembic commands ###
|
|
|
|
# ### end Alembic commands ###
|
|
|
|
|