"""phase9: add email_logs table Revision ID: 002_phase9 Revises: 001_phase5 Create Date: 2026-03-16 Stores every email send attempt for delivery monitoring. """ from alembic import op import sqlalchemy as sa revision = "002_phase9" down_revision = "001_phase5" branch_labels = None depends_on = None def upgrade() -> None: op.create_table( "email_logs", sa.Column("id", sa.String(36), primary_key=True), sa.Column("school_id", sa.String(36), sa.ForeignKey("schools.id", ondelete="SET NULL"), nullable=True), sa.Column("to_email", sa.String(255), nullable=False), sa.Column("subject", sa.String(500), nullable=False), sa.Column("email_type", sa.String(30), nullable=False), sa.Column("status", sa.String(10), nullable=False), sa.Column("error_message", sa.Text, nullable=True), sa.Column("sent_at", sa.DateTime(timezone=True), nullable=True), sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), ) op.create_index("ix_email_logs_school_id", "email_logs", ["school_id"]) op.create_index("ix_email_logs_to_email", "email_logs", ["to_email"]) op.create_index("ix_email_logs_email_type", "email_logs", ["email_type"]) op.create_index("ix_email_logs_status", "email_logs", ["status"]) def downgrade() -> None: op.drop_table("email_logs")