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') |