| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- """add feedback username snapshot
- Revision ID: 20260730_07
- Revises: 20260730_06
- Create Date: 2026-07-30
- """
- from __future__ import annotations
- from collections.abc import Sequence
- import sqlalchemy as sa
- from alembic import op
- revision: str = "20260730_07"
- down_revision: str | None = "20260730_06"
- branch_labels: str | Sequence[str] | None = None
- depends_on: str | Sequence[str] | None = None
- def upgrade() -> None:
- op.add_column(
- "demand_feedback",
- sa.Column(
- "feedback_username_snapshot",
- sa.String(length=64),
- nullable=False,
- server_default="",
- comment="反馈人登录账号快照",
- ),
- )
- feedback = sa.table(
- "demand_feedback",
- sa.column("feedback_user_id", sa.Integer()),
- sa.column("feedback_username_snapshot", sa.String(length=64)),
- )
- user_account = sa.table(
- "auth_user",
- sa.column("id", sa.Integer()),
- sa.column("username", sa.String(length=64)),
- )
- username = (
- sa.select(user_account.c.username)
- .where(user_account.c.id == feedback.c.feedback_user_id)
- .scalar_subquery()
- )
- op.execute(
- feedback.update()
- .where(feedback.c.feedback_username_snapshot == "")
- .values(feedback_username_snapshot=username)
- )
- with op.batch_alter_table("demand_feedback") as batch_op:
- batch_op.alter_column(
- "feedback_username_snapshot",
- existing_type=sa.String(length=64),
- server_default=None,
- )
- def downgrade() -> None:
- with op.batch_alter_table("demand_feedback") as batch_op:
- batch_op.drop_column("feedback_username_snapshot")
|