Coverage for slidge/db/alembic/versions/abea9b63fa34_add_unique_constraint_on_avatar_url.py: 85%
13 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-08-18 04:30 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-08-18 04:30 +0000
1"""Add unique constraint on avatar URL
3Revision ID: abea9b63fa34
4Revises: 805fdc0bf984
5Create Date: 2026-02-09 20:20:53.576218
7"""
9from collections.abc import Sequence
11from alembic import op
13# revision identifiers, used by Alembic.
14revision: str = "abea9b63fa34"
15down_revision: str | None = "805fdc0bf984"
16branch_labels: str | Sequence[str] | None = None
17depends_on: str | Sequence[str] | None = None
20def upgrade() -> None:
21 op.execute("""
22 DELETE FROM avatar
23 WHERE id NOT IN (
24 SELECT MIN(id)
25 FROM avatar
26 GROUP BY url
27 );
28 """)
30 with op.batch_alter_table("avatar", schema=None) as batch_op:
31 batch_op.create_unique_constraint(batch_op.f("uq_avatar_url"), ["url"])
34def downgrade() -> None:
35 with op.batch_alter_table("avatar", schema=None) as batch_op:
36 batch_op.drop_constraint(batch_op.f("uq_avatar_url"), type_="unique")