Kamixitong/migrations/versions/20241111_add_soft_delete_to_admin.py
2025-12-12 11:35:14 +08:00

52 lines
1.5 KiB
Python

"""Add soft delete fields to admin
Revision ID: add_soft_delete_admin
Revises:
Create Date: 2024-11-11 00:00:00.000000
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
from sqlalchemy.engine import reflection
# revision identifiers
revision = 'add_soft_delete_admin'
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
"""添加软删除字段到admin表"""
# 获取数据库连接和表信息
bind = op.get_bind()
inspector = reflection.Inspector.from_engine(bind)
# 获取admin表的现有列
existing_columns = [column['name'] for column in inspector.get_columns('admin')]
# 只有当列不存在时才添加
if 'is_deleted' not in existing_columns:
# 添加 is_deleted 字段
op.add_column('admin', sa.Column('is_deleted', sa.Integer(), nullable=False, default=0))
if 'delete_time' not in existing_columns:
# 添加 delete_time 字段
op.add_column('admin', sa.Column('delete_time', sa.DateTime(), nullable=True))
# 检查索引是否已存在
existing_indexes = [index['name'] for index in inspector.get_indexes('admin')]
if 'ix_admin_is_deleted' not in existing_indexes:
# 创建索引
op.create_index('ix_admin_is_deleted', 'admin', ['is_deleted'])
def downgrade():
"""删除admin表的软删除字段"""
# 删除索引
op.drop_index('ix_admin_is_deleted', table_name='admin')
# 删除列
op.drop_column('admin', 'delete_time')
op.drop_column('admin', 'is_deleted')