"""Add user phone field

Revision ID: 029
Revises: 028
Create Date: 2026-07-05

补录用户手机号字段。生产数据库已手动添加过该字段，
因此 upgrade 做幂等检查。
"""

import sqlalchemy as sa

from alembic import context, op

revision = "029"
down_revision = "028"
branch_labels = None
depends_on = None


def _column_exists(table: str, column: str) -> bool:
    if context.is_offline_mode():
        return False
    conn = op.get_bind()
    result = conn.execute(
        sa.text(
            "SELECT COUNT(*) FROM information_schema.columns " "WHERE table_name = :table AND column_name = :column"
        ),
        {"table": table, "column": column},
    )
    return result.scalar() > 0


def upgrade() -> None:
    if not _column_exists("users", "phone"):
        op.add_column("users", sa.Column("phone", sa.String(20), nullable=True))


def downgrade() -> None:
    op.drop_column("users", "phone")
