Coverage for slidge/db/alembic/versions/85d6e2a9ee7f_make_avatar_hash_mandatory.py: 93%

15 statements  

« prev     ^ index     » next       coverage.py v7.17.0, created at 2026-11-10 12:26 +0000

1"""make avatar hash mandatory 

2 

3Revision ID: 85d6e2a9ee7f 

4Revises: b597d84d17dc 

5Create Date: 2026-10-25 18:48:04.092522 

6 

7""" 

8 

9from collections.abc import Sequence 

10 

11import sqlalchemy as sa 

12from alembic import op 

13 

14# revision identifiers, used by Alembic. 

15revision: str = "85d6e2a9ee7f" 

16down_revision: str | None = "b597d84d17dc" 

17branch_labels: str | Sequence[str] | None = None 

18depends_on: str | Sequence[str] | None = None 

19 

20 

21def upgrade() -> None: 

22 for table, column in [ 

23 ("room", "avatar_id"), 

24 ("contact", "avatar_id"), 

25 ("space", "avatar_id"), 

26 ]: 

27 op.execute( 

28 f'UPDATE "{table}" SET "{column}" = NULL ' 

29 f'WHERE "{column}" IN (SELECT id FROM avatar WHERE hash IS NULL)' 

30 ) 

31 op.execute("DELETE FROM avatar WHERE hash IS NULL") 

32 with op.batch_alter_table("avatar", schema=None) as batch_op: 

33 batch_op.alter_column("hash", existing_type=sa.VARCHAR(), nullable=False) 

34 

35 

36def downgrade() -> None: 

37 raise RuntimeError("downgrades are not supported")