"""make payment_requests_links.invoice_id nullable

The original create-table migration set invoice_id as NOT NULL.  The ORM model
defines it as Optional (nullable=True) because HPP links are created independently
of invoices.  This mismatch caused a psycopg NotNullViolation on dev when the
resend-HPP endpoint created a new PaymentRequestLinks row without an invoice.

Revision ID: f8a9b0c1d2e3
Revises: e1bf0d0f8f27
Create Date: 2026-03-19 14:00:00.000000

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = 'f8a9b0c1d2e3'
down_revision: Union[str, Sequence[str], None] = 'e1bf0d0f8f27'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    """Drop NOT NULL constraint on payment_requests_links.invoice_id."""
    op.alter_column(
        'payment_requests_links',
        'invoice_id',
        existing_type=sa.Integer(),
        nullable=True,
    )


def downgrade() -> None:
    """Restore NOT NULL constraint on payment_requests_links.invoice_id."""
    op.alter_column(
        'payment_requests_links',
        'invoice_id',
        existing_type=sa.Integer(),
        nullable=False,
    )
