完成虎牙宝典WSS绑定与快照隔离重构

This commit is contained in:
yml2213
2026-09-01 12:40:22 +08:00
parent 24f312a3a9
commit 26514b332d
11 changed files with 181 additions and 24 deletions
@@ -0,0 +1,42 @@
"""按账号和活动隔离虎牙宝典商品快照。"""
from collections.abc import Sequence
import sqlalchemy as sa
from alembic import op
revision: str = "20260901_0033"
down_revision: str | None = "20260831_0032"
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None
def _columns(bind, table: str) -> set[str]:
return {item["name"] for item in sa.inspect(bind).get_columns(table)}
def upgrade() -> None:
bind = op.get_bind()
for table in ("huya_goods_snapshot", "huya_recharge_goods_snapshot"):
columns = _columns(bind, table)
if "account_id" not in columns:
op.add_column(table, sa.Column("account_id", sa.Integer(), nullable=True))
op.create_index(f"ix_{table}_account_id", table, ["account_id"])
if "sid" not in columns:
op.add_column(
table,
sa.Column("sid", sa.Integer(), nullable=False, server_default="0"),
)
op.create_index(f"ix_{table}_sid", table, ["sid"])
def downgrade() -> None:
bind = op.get_bind()
for table in ("huya_goods_snapshot", "huya_recharge_goods_snapshot"):
columns = _columns(bind, table)
if "sid" in columns:
op.drop_index(f"ix_{table}_sid", table_name=table)
op.drop_column(table, "sid")
if "account_id" in columns:
op.drop_index(f"ix_{table}_account_id", table_name=table)
op.drop_column(table, "account_id")