55 lines
1.3 KiB
Python
55 lines
1.3 KiB
Python
|
"""添加 task_id 字段到 Task 表
|
|||
|
|
|||
|
Revision ID: 001
|
|||
|
Revises:
|
|||
|
Create Date: 2023-07-01
|
|||
|
|
|||
|
"""
|
|||
|
from alembic import op
|
|||
|
import sqlalchemy as sa
|
|||
|
from sqlalchemy import text
|
|||
|
import uuid
|
|||
|
from sqlalchemy.engine import reflection
|
|||
|
import sys
|
|||
|
import os
|
|||
|
from pathlib import Path
|
|||
|
|
|||
|
# 添加 migrations 目录到 Python 路径
|
|||
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|||
|
|
|||
|
# 导入迁移辅助模块
|
|||
|
from migration_helpers import (
|
|||
|
safe_add_column,
|
|||
|
safe_create_index,
|
|||
|
safe_alter_column,
|
|||
|
generate_uuid_for_null_values,
|
|||
|
safe_drop_index,
|
|||
|
safe_drop_column
|
|||
|
)
|
|||
|
|
|||
|
# revision identifiers, used by Alembic.
|
|||
|
revision = '001'
|
|||
|
down_revision = None
|
|||
|
branch_labels = None
|
|||
|
depends_on = None
|
|||
|
|
|||
|
|
|||
|
def upgrade():
|
|||
|
# 添加 task_id 字段到 Task 表
|
|||
|
if safe_add_column('tasks', 'task_id', sa.String(36), nullable=True, comment='任务UUID,用于外部引用'):
|
|||
|
# 为已有记录生成 UUID
|
|||
|
generate_uuid_for_null_values('tasks', 'task_id')
|
|||
|
|
|||
|
# 添加唯一索引
|
|||
|
safe_create_index('ix_tasks_task_id', 'tasks', ['task_id'], unique=True)
|
|||
|
|
|||
|
# 添加非空约束
|
|||
|
safe_alter_column('tasks', 'task_id', nullable=False, existing_type=sa.String(36))
|
|||
|
|
|||
|
|
|||
|
def downgrade():
|
|||
|
# 删除索引
|
|||
|
safe_drop_index('ix_tasks_task_id', 'tasks')
|
|||
|
|
|||
|
# 删除列
|
|||
|
safe_drop_column('tasks', 'task_id')
|