"""Add purge_rules table Revision ID: 0003 Revises: 0002 Create Date: 2026-04-01 """ from __future__ import annotations from typing import Sequence, Union import sqlalchemy as sa from alembic import op from sqlalchemy.dialects import postgresql revision: str = "0003" down_revision: Union[str, None] = "0002" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.create_table( "purge_rules", sa.Column("id", postgresql.UUID(as_uuid=True), primary_key=True, server_default=sa.text("gen_random_uuid()")), sa.Column("email_address", sa.Text, nullable=False, unique=True), sa.Column("display_name", sa.Text), sa.Column("older_than_days", sa.Integer, nullable=False, server_default="30"), sa.Column("is_active", sa.Boolean, nullable=False, server_default="TRUE"), sa.Column("notes", sa.Text), sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.text("NOW()")), ) op.create_index("idx_purge_rules_active", "purge_rules", ["email_address"], postgresql_where=sa.text("is_active = TRUE")) def downgrade() -> None: op.drop_table("purge_rules")