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
« prev ^ index » next coverage.py v7.17.0, created at 2026-11-10 12:26 +0000
1"""make avatar hash mandatory
3Revision ID: 85d6e2a9ee7f
4Revises: b597d84d17dc
5Create Date: 2026-10-25 18:48:04.092522
7"""
9from collections.abc import Sequence
11import sqlalchemy as sa
12from alembic import op
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
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)
36def downgrade() -> None:
37 raise RuntimeError("downgrades are not supported")