"""add grouped_id to messages (Telegram album/media-group key) Revision ID: 0003 Revises: 0002 Create Date: 2026-05-05 """ from typing import Sequence, Union import sqlalchemy as sa from alembic import op revision: str = "0003" down_revision: Union[str, None] = "0002" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.add_column("messages", sa.Column("grouped_id", sa.BigInteger(), nullable=True)) op.create_index( "ix_messages_grouped_id", "messages", ["channel_id", "grouped_id"] ) # Backfill grouped_id from the stored raw JSONB for existing rows so that # albums saved before this migration are grouped retroactively. op.execute( """ UPDATE messages SET grouped_id = (raw->>'grouped_id')::bigint WHERE grouped_id IS NULL AND raw IS NOT NULL AND raw->>'grouped_id' IS NOT NULL """ ) def downgrade() -> None: op.drop_index("ix_messages_grouped_id", table_name="messages") op.drop_column("messages", "grouped_id")