"""Add Stripe pre-payment fields to pending_registrations.

Supports the home-site signup flow where users pay before verifying email.

Revision ID: 073
Revises: 072
Create Date: 2026-05-15
"""
from typing import Sequence, Union

import sqlalchemy as sa
from alembic import op

revision: str = "073"
down_revision: Union[str, None] = "072"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    op.add_column("pending_registrations", sa.Column("checkout_session_id", sa.String(255), nullable=True))
    op.add_column("pending_registrations", sa.Column("checkout_expires_at", sa.DateTime(timezone=True), nullable=True))
    op.add_column("pending_registrations", sa.Column("paid_at", sa.DateTime(timezone=True), nullable=True))
    op.add_column("pending_registrations", sa.Column("stripe_customer_id", sa.String(255), nullable=True))
    op.add_column("pending_registrations", sa.Column("stripe_subscription_id", sa.String(255), nullable=True))

    op.create_index(
        "ix_pending_registrations_checkout_session_id",
        "pending_registrations",
        ["checkout_session_id"],
        unique=False,
    )


def downgrade() -> None:
    op.drop_index("ix_pending_registrations_checkout_session_id", table_name="pending_registrations")
    op.drop_column("pending_registrations", "stripe_subscription_id")
    op.drop_column("pending_registrations", "stripe_customer_id")
    op.drop_column("pending_registrations", "paid_at")
    op.drop_column("pending_registrations", "checkout_expires_at")
    op.drop_column("pending_registrations", "checkout_session_id")
