VWED_server/migrations/versions/001_add_task_id_field.py

55 lines
1.3 KiB
Python
Raw Normal View History

2025-04-30 16:57:46 +08:00
"""添加 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')