57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
"""add workflow run metadata columns
|
|
|
|
Revision ID: e5f6g7h8i9j0
|
|
Revises: d4e5f6g7h8i9
|
|
Create Date: 2026-06-01 12:00:00.000000
|
|
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
revision: str = 'e5f6g7h8i9j0'
|
|
down_revision: Union[str, None] = 'd4e5f6g7h8i9'
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
bind = op.get_bind()
|
|
inspector = sa.inspect(bind)
|
|
existing_columns = {
|
|
column['name']
|
|
for column in inspector.get_columns('ai_workflow_run')
|
|
}
|
|
|
|
if 'trigger_type' not in existing_columns:
|
|
op.add_column(
|
|
'ai_workflow_run',
|
|
sa.Column('trigger_type', sa.String(length=30), nullable=True, comment='触发来源'),
|
|
)
|
|
if 'use_draft' not in existing_columns:
|
|
op.add_column(
|
|
'ai_workflow_run',
|
|
sa.Column('use_draft', sa.Boolean(), nullable=True, comment='是否使用草稿定义执行'),
|
|
)
|
|
if 'workflow_version' not in existing_columns:
|
|
op.add_column(
|
|
'ai_workflow_run',
|
|
sa.Column('workflow_version', sa.Integer(), nullable=True, comment='执行时发布版本号'),
|
|
)
|
|
if 'definition_snapshot' not in existing_columns:
|
|
op.add_column(
|
|
'ai_workflow_run',
|
|
sa.Column('definition_snapshot', sa.JSON(), nullable=True, comment='运行开始时的工作流定义快照'),
|
|
)
|
|
op.execute("UPDATE ai_workflow_run SET trigger_type = 'api' WHERE trigger_type IS NULL")
|
|
op.execute("UPDATE ai_workflow_run SET use_draft = false WHERE use_draft IS NULL")
|
|
op.execute("UPDATE ai_workflow_run SET definition_snapshot = '{}' WHERE definition_snapshot IS NULL")
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_column('ai_workflow_run', 'definition_snapshot')
|
|
op.drop_column('ai_workflow_run', 'workflow_version')
|
|
op.drop_column('ai_workflow_run', 'use_draft')
|
|
op.drop_column('ai_workflow_run', 'trigger_type')
|