Files
signalscout-backend/migrations/versions/202607081530_store_business_time.py
2026-07-08 23:08:55 +08:00

46 lines
1.7 KiB
Python

"""store business time in beijing timezone
Revision ID: 202607081530
Revises: 202607080900
Create Date: 2026-07-08 15:30:00
"""
from typing import Sequence, Union
from alembic import op
revision: str = "202607081530"
down_revision: Union[str, None] = "202607080900"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# 历史数据由UTC换算为北京时间,后续新数据由业务层直接写入北京时间。
op.execute("UPDATE agent_runs SET started_at = DATE_ADD(started_at, INTERVAL 8 HOUR)")
op.execute(
"UPDATE agent_runs SET finished_at = DATE_ADD(finished_at, INTERVAL 8 HOUR) "
"WHERE finished_at IS NOT NULL"
)
op.execute("UPDATE reports SET created_at = DATE_ADD(created_at, INTERVAL 8 HOUR)")
op.execute("UPDATE signals SET created_at = DATE_ADD(created_at, INTERVAL 8 HOUR)")
op.execute(
"UPDATE signals SET published_at = DATE_ADD(published_at, INTERVAL 8 HOUR) "
"WHERE published_at IS NOT NULL"
)
def downgrade() -> None:
# 回滚时恢复迁移前的UTC记录值,便于迁移链保持可逆。
op.execute("UPDATE agent_runs SET started_at = DATE_SUB(started_at, INTERVAL 8 HOUR)")
op.execute(
"UPDATE agent_runs SET finished_at = DATE_SUB(finished_at, INTERVAL 8 HOUR) "
"WHERE finished_at IS NOT NULL"
)
op.execute("UPDATE reports SET created_at = DATE_SUB(created_at, INTERVAL 8 HOUR)")
op.execute("UPDATE signals SET created_at = DATE_SUB(created_at, INTERVAL 8 HOUR)")
op.execute(
"UPDATE signals SET published_at = DATE_SUB(published_at, INTERVAL 8 HOUR) "
"WHERE published_at IS NOT NULL"
)