"""add mail_quota The hub's outbound mail allowance, kept across restarts. It lived in two dicts in `mail.py`, so every deploy handed out a fresh budget — and the hub is deployed often. A bound a restart forgets is not a bound. Revision ID: e5f6a7b8c9d0 Revises: d4e5f6a7b8c9 """ from collections.abc import Sequence import sqlalchemy as sa from alembic import op revision: str = "e5f6a7b8c9d0" down_revision: str | Sequence[str] | None = "d4e5f6a7b8c9" branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None def upgrade() -> None: op.create_table( "mail_quota", sa.Column("key", sa.String(64), primary_key=True), sa.Column("window_start", sa.DateTime(timezone=True), nullable=False), sa.Column("count", sa.Integer(), nullable=False, server_default="0"), sa.Column("last_sent", sa.DateTime(timezone=True), nullable=True), ) def downgrade() -> None: # Dropping this returns the hub to sending with no recorded history, not to # sending without a bound: the limits themselves live in `hub_settings` and # in the configuration file. op.drop_table("mail_quota")