a10a2db27a
- 新增 visual_design_language.md 设计规范文档 - 新增 auth 设计 tokens (authBackground, authCard, authInput, feedback 系列等) - 重构登录/注册/验证码/重置密码页面为新设计系统 - 新增 AuthHeroHeader, AuthSurfaceCard, AuthSection, AuthField, PasswordField 组件 - 重构 AppBanner 和 Toast 支持多类型配置 (info/success/warning/error) - 后端 AgentScope: 重整 schemas/prompts/tools 作用域, 新增协议文档 - 更新 AGENTS.md 集成视觉设计语言约束
67 lines
1.7 KiB
Python
67 lines
1.7 KiB
Python
"""Convert inbox_messages.content from text to jsonb and migrate existing data.
|
|
|
|
Revision ID: 20260313_0001
|
|
Revises: 202603060002
|
|
Create Date: 2026-03-13 12:00:00
|
|
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Sequence
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
|
|
revision: str = "20260313_0001"
|
|
down_revision: str = "202603060002"
|
|
branch_labels: Sequence[str] | None = None
|
|
depends_on: Sequence[str] | None = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.execute("""
|
|
UPDATE inbox_messages
|
|
SET content = (
|
|
CASE
|
|
WHEN message_type = 'friend_request' AND content IS NOT NULL THEN
|
|
jsonb_build_object('type', 'request', 'message', content)
|
|
WHEN message_type = 'calendar' AND content IS NOT NULL THEN
|
|
content::jsonb
|
|
ELSE NULL
|
|
END
|
|
)
|
|
WHERE content IS NOT NULL
|
|
""")
|
|
op.alter_column(
|
|
"inbox_messages",
|
|
"content",
|
|
existing_type=sa.Text(),
|
|
type_=JSONB(),
|
|
postgresql_using="content::jsonb",
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.execute("""
|
|
UPDATE inbox_messages
|
|
SET content = (
|
|
CASE
|
|
WHEN message_type = 'friend_request' AND content IS NOT NULL THEN
|
|
content->>'message'
|
|
WHEN message_type = 'calendar' AND content IS NOT NULL THEN
|
|
content::text
|
|
ELSE NULL
|
|
END
|
|
)
|
|
WHERE content IS NOT NULL
|
|
""")
|
|
op.alter_column(
|
|
"inbox_messages",
|
|
"content",
|
|
existing_type=JSONB(),
|
|
type_=sa.Text(),
|
|
postgresql_using="content::text",
|
|
)
|