"""media versions (keep every edited media) Revision ID: f7a2c9e1b3d5 Revises: a3f1c8e94d72 Create Date: 2026-05-30 03:00:00.000000 """ from collections.abc import Sequence import sqlalchemy as sa from alembic import op revision: str = "f7a2c9e1b3d5" down_revision: str | None = "a3f1c8e94d72" branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None def upgrade() -> None: op.create_table( "media_versions", sa.Column("id", sa.BigInteger(), autoincrement=True, nullable=False), sa.Column("account_id", sa.Integer(), nullable=False), sa.Column("chat_id", sa.BigInteger(), nullable=False), sa.Column("message_id", sa.BigInteger(), nullable=False), sa.Column( "observed_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False, ), sa.Column("kind", sa.String(), nullable=False), sa.Column("storage_key", sa.String(), nullable=False), sa.Column("file_size", sa.BigInteger(), nullable=True), sa.Column("mime", sa.String(), nullable=True), sa.Column("ttl_seconds", sa.Integer(), nullable=True), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint( "account_id", "chat_id", "message_id", "storage_key", name="uq_media_versions_content", ), ) op.create_index( "ix_media_versions_message", "media_versions", ["account_id", "chat_id", "message_id", "observed_at"], ) def downgrade() -> None: op.drop_index("ix_media_versions_message", table_name="media_versions") op.drop_table("media_versions")