"""add unique constraint on images(car_id, fullres_image) Revision ID: 005 Revises: 004_widen_string_columns Create Date: 2026-04-16 """ from alembic import op revision = "005_unique_images_constraint" down_revision = "004_widen_string_columns" branch_labels = None depends_on = None def upgrade() -> None: # Удаляем дубли через CTE + ROW_NUMBER (быстрее чем NOT IN subquery) op.execute(""" WITH dupes AS ( SELECT id, ROW_NUMBER() OVER (PARTITION BY car_id, fullres_image ORDER BY id) AS rn FROM images ) DELETE FROM images WHERE id IN (SELECT id FROM dupes WHERE rn > 1) """) op.create_unique_constraint( "uq_images_car_id_fullres", "images", ["car_id", "fullres_image"], ) def downgrade() -> None: op.drop_constraint("uq_images_car_id_fullres", "images", type_="unique")