64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
"""add wechat identity fields
|
|
|
|
Revision ID: 20260507_add_wechat_identity
|
|
Revises: 20260501_add_reading_corner
|
|
Create Date: 2026-05-07 10:00:00
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
revision = "20260507_add_wechat_identity"
|
|
down_revision = "20260501_add_reading_corner"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def _has_column(inspector: sa.Inspector, table_name: str, column_name: str) -> bool:
|
|
return column_name in {column["name"] for column in inspector.get_columns(table_name)}
|
|
|
|
|
|
def upgrade() -> None:
|
|
bind = op.get_bind()
|
|
inspector = sa.inspect(bind)
|
|
tables = set(inspector.get_table_names())
|
|
if "users" not in tables:
|
|
return
|
|
|
|
if not _has_column(inspector, "users", "wechat_openid"):
|
|
op.add_column("users", sa.Column("wechat_openid", sa.String(length=128), nullable=True))
|
|
if not _has_column(inspector, "users", "wechat_unionid"):
|
|
op.add_column("users", sa.Column("wechat_unionid", sa.String(length=128), nullable=True))
|
|
if not _has_column(inspector, "users", "phone_verified_at"):
|
|
op.add_column("users", sa.Column("phone_verified_at", sa.DateTime(), nullable=True))
|
|
|
|
inspector = sa.inspect(bind)
|
|
indexes = {index["name"] for index in inspector.get_indexes("users")}
|
|
if "ix_users_wechat_openid" not in indexes:
|
|
op.create_index("ix_users_wechat_openid", "users", ["wechat_openid"], unique=True)
|
|
|
|
|
|
def downgrade() -> None:
|
|
bind = op.get_bind()
|
|
inspector = sa.inspect(bind)
|
|
tables = set(inspector.get_table_names())
|
|
if "users" not in tables:
|
|
return
|
|
|
|
indexes = {index["name"] for index in inspector.get_indexes("users")}
|
|
if "ix_users_wechat_openid" in indexes:
|
|
op.drop_index("ix_users_wechat_openid", table_name="users")
|
|
|
|
inspector = sa.inspect(bind)
|
|
if _has_column(inspector, "users", "phone_verified_at"):
|
|
op.drop_column("users", "phone_verified_at")
|
|
inspector = sa.inspect(bind)
|
|
if _has_column(inspector, "users", "wechat_unionid"):
|
|
op.drop_column("users", "wechat_unionid")
|
|
inspector = sa.inspect(bind)
|
|
if _has_column(inspector, "users", "wechat_openid"):
|
|
op.drop_column("users", "wechat_openid")
|