Files
webmail-client/backend/migrations/versions/0017_default_quota.py
T

41 lines
1.2 KiB
Python
Raw Normal View History

"""instance-wide default quota for new users
The per-user ``users.quota_bytes`` stays authoritative for accounts that already
exist — changing the default must never resize anyone's mailbox retroactively.
This is only the value handed to the next user created.
Revision ID: 0017
Revises: 0016
Create Date: 2026-09-15
"""
from __future__ import annotations
from collections.abc import Sequence
from alembic import op
revision: str = "0017"
down_revision: str | None = "0016"
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None
# 5 GiB — the same figure users.quota_bytes has defaulted to since 0001.
_DEFAULT = 5 * 1024**3
def upgrade() -> None:
op.execute(
"ALTER TABLE app_settings ADD COLUMN default_quota_bytes bigint NOT NULL "
f"DEFAULT {_DEFAULT}"
)
op.execute(
"ALTER TABLE app_settings ADD CONSTRAINT ck_app_settings_quota_positive "
"CHECK (default_quota_bytes > 0)"
)
def downgrade() -> None:
op.execute("ALTER TABLE app_settings DROP CONSTRAINT IF EXISTS ck_app_settings_quota_positive")
op.execute("ALTER TABLE app_settings DROP COLUMN IF EXISTS default_quota_bytes")