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

1"""Add unique constraint on avatar URL 

2 

3Revision ID: abea9b63fa34 

4Revises: 805fdc0bf984 

5Create Date: 2026-02-09 20:20:53.576218 

6 

7""" 

8 

9from collections.abc import Sequence 

10 

11from alembic import op 

12 

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 

18 

19 

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 """) 

29 

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"]) 

32 

33 

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")