37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
"""add missing columns if users table exists without them
|
|
|
|
Revision ID: 003
|
|
Revises: 002
|
|
Create Date: 2025-02-05
|
|
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
revision: str = "003"
|
|
down_revision: Union[str, None] = "002"
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
# 检查 users 表是否存在 role 列,若不存在则添加
|
|
conn = op.get_bind()
|
|
inspector = sa.inspect(conn)
|
|
columns = [c["name"] for c in inspector.get_columns("users")] if inspector.has_table("users") else []
|
|
|
|
if "users" in inspector.get_table_names():
|
|
if "role" not in columns:
|
|
op.add_column("users", sa.Column("role", sa.String(32), nullable=False, server_default="admin"))
|
|
if "is_active" not in columns:
|
|
op.add_column("users", sa.Column("is_active", sa.Boolean(), nullable=False, server_default="true"))
|
|
if "created_at" not in columns:
|
|
op.add_column("users", sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=True))
|
|
|
|
|
|
def downgrade() -> None:
|
|
# 可选:移除这些列(通常不需要)
|
|
pass
|