"""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", )