be5e94ed6d
f8d3b1e60a27 最初基于旧 main(#31 双 head)写、down_revision 指向那对父;但 #33 已用 a8c47fc4dc39 合并那对 head,合入 main 后 a8c47 与 f8d3 平行 → 又成双 head,alembic upgrade head 报 Multiple heads、deploy 迁移会失败。 改 f8d3 的 down_revision 为 a8c47fc4dc39(线性接其后、只加两列),收口单 head。已 SQLite upgrade head 验证整链可 apply。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
"""add user.debug_trace_enabled + comparison_record.trace_url
|
||
|
||
调试链接权限功能:
|
||
- user.debug_trace_enabled:运营后台给指定用户开「复制调试链接」权限
|
||
- comparison_record.trace_url:比价记录页「复制调试链接」的数据(pricebot done 帧给,
|
||
dir 名含落盘时分秒、前端/server 拼不出,必须落库)
|
||
|
||
注:本迁移最初基于旧 main(#31,双 head)写、down_revision 曾指向那对父;但 #33 已用
|
||
a8c47fc4dc39 合并了那对双 head,故改为线性接在 a8c47fc4dc39 之后、只负责加两列
|
||
(避免与 a8c47fc4dc39 平行再造一个双 head)。
|
||
|
||
Revision ID: f8d3b1e60a27
|
||
Revises: a8c47fc4dc39
|
||
Create Date: 2026-06-10 02:40:00.000000
|
||
|
||
"""
|
||
from typing import Sequence, Union
|
||
|
||
from alembic import op
|
||
import sqlalchemy as sa
|
||
|
||
|
||
# revision identifiers, used by Alembic.
|
||
revision: str = "f8d3b1e60a27"
|
||
down_revision: Union[str, Sequence[str], None] = "a8c47fc4dc39"
|
||
branch_labels: Union[str, Sequence[str], None] = None
|
||
depends_on: Union[str, Sequence[str], None] = None
|
||
|
||
|
||
def upgrade() -> None:
|
||
# sa.false() 渲染成 PG 的 false / SQLite 的 0,两端兼容(避免字符串 "false" 在 SQLite 上存歪)
|
||
op.add_column(
|
||
"user",
|
||
sa.Column(
|
||
"debug_trace_enabled",
|
||
sa.Boolean(),
|
||
nullable=False,
|
||
server_default=sa.false(),
|
||
),
|
||
)
|
||
op.add_column(
|
||
"comparison_record",
|
||
sa.Column("trace_url", sa.String(length=512), nullable=True),
|
||
)
|
||
|
||
|
||
def downgrade() -> None:
|
||
op.drop_column("comparison_record", "trace_url")
|
||
op.drop_column("user", "debug_trace_enabled")
|