44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
"""per-account policy defaults
|
|
|
|
Revision ID: e7b4c2a9f861
|
|
Revises: d5f9b2c8e3a1
|
|
Create Date: 2026-08-05 23:10:00.000000
|
|
|
|
"""
|
|
|
|
from collections.abc import Sequence
|
|
|
|
from alembic import op
|
|
|
|
revision: str = "e7b4c2a9f861"
|
|
down_revision: str | None = "d5f9b2c8e3a1"
|
|
branch_labels: str | Sequence[str] | None = None
|
|
depends_on: str | Sequence[str] | None = None
|
|
|
|
_SCOPE_KEY = "capture_policy_account_id_scope_type_scope_id_key"
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.execute("DROP INDEX ix_capture_policy_default")
|
|
op.execute(f"ALTER TABLE capture_policy DROP CONSTRAINT {_SCOPE_KEY}")
|
|
op.execute(
|
|
"CREATE UNIQUE INDEX ix_capture_policy_scope ON capture_policy "
|
|
"(account_id, scope_type, scope_id) NULLS NOT DISTINCT"
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.execute(
|
|
"DELETE FROM capture_policy WHERE account_id IS NOT NULL "
|
|
"AND scope_type LIKE 'default_%'"
|
|
)
|
|
op.execute("DROP INDEX ix_capture_policy_scope")
|
|
op.execute(
|
|
f"ALTER TABLE capture_policy ADD CONSTRAINT {_SCOPE_KEY} "
|
|
"UNIQUE (account_id, scope_type, scope_id)"
|
|
)
|
|
op.execute(
|
|
"CREATE UNIQUE INDEX ix_capture_policy_default "
|
|
"ON capture_policy (scope_type) WHERE scope_type LIKE 'default_%'"
|
|
)
|