"""虎牙账号增加登录渠道字段 (区分 Web 旧版 / App 协议登录)。 Revision ID: 20260829_0030 Revises: 20260814_0029 Create Date: 2026-08-29 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa revision: str = "20260829_0030" down_revision: Union[str, None] = "20260814_0029" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: """huya_accounts 新增 login_channel (上次成功登录渠道)。""" bind = op.get_bind() inspector = sa.inspect(bind) if not inspector.has_table("huya_accounts"): return columns = {column["name"] for column in inspector.get_columns("huya_accounts")} if "login_channel" not in columns: op.add_column("huya_accounts", sa.Column("login_channel", sa.String(16), nullable=False, server_default="")) indexes = {index["name"] for index in inspector.get_indexes("huya_accounts")} if "ix_huya_accounts_login_channel" not in indexes: op.create_index("ix_huya_accounts_login_channel", "huya_accounts", ["login_channel"]) def downgrade() -> None: """移除 login_channel 字段。""" bind = op.get_bind() inspector = sa.inspect(bind) if not inspector.has_table("huya_accounts"): return indexes = {index["name"] for index in inspector.get_indexes("huya_accounts")} if "ix_huya_accounts_login_channel" in indexes: op.drop_index("ix_huya_accounts_login_channel", table_name="huya_accounts") columns = {column["name"] for column in inspector.get_columns("huya_accounts")} if "login_channel" in columns: op.drop_column("huya_accounts", "login_channel")