"""image_record: duration_seconds (Tier-1 video near-dup key) #871. Videos previously deduped on sha256 only (pHash is images-only), so a different encode/remux of the same video imported as a distinct record. Persist the container duration so the importer can treat same-artist videos with matching duration (+ aspect ratio) as the same content and dedup/supersede like images. NULL for images and for video rows imported before this column existed (a backfill re-probes those so they participate in dedup). Revision ID: 0052 Revises: 0051 Create Date: 2026-06-16 """ from typing import Sequence, Union import sqlalchemy as sa from alembic import op revision: str = "0052" down_revision: Union[str, None] = "0051" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.add_column( "image_record", sa.Column("duration_seconds", sa.Float(), nullable=True) ) def downgrade() -> None: op.drop_column("image_record", "duration_seconds")