"""添加 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')