"""INDL-56: add proposal uploaded_document columns.

Three additive nullable columns on ``proposals`` for the staff-uploaded
proposal PDF (distinct from ``pdf_s3_key``, the system-generated proposal
PDF produced when the proposal is sent) — mirrors
``0068_contract_signed_document_columns``. NULL on all existing rows means
"no document uploaded yet"; the frontend already treats that as the default
state, so no backfill is required.

Revision ID: 0070
Revises: 0069
"""
import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql

revision = "0070"
down_revision = "0069"
branch_labels = None
depends_on = None


def upgrade() -> None:
    op.add_column(
        "proposals",
        sa.Column("uploaded_document_s3_key", sa.Text(), nullable=True),
    )
    op.add_column(
        "proposals",
        sa.Column(
            "uploaded_document_uploaded_at", sa.DateTime(timezone=True), nullable=True
        ),
    )
    op.add_column(
        "proposals",
        sa.Column(
            "uploaded_document_uploaded_by",
            postgresql.UUID(as_uuid=True),
            nullable=True,
        ),
    )
    op.create_foreign_key(
        "fk_proposals_uploaded_document_uploaded_by",
        "proposals",
        "users",
        ["uploaded_document_uploaded_by"],
        ["id"],
        ondelete="SET NULL",
    )


def downgrade() -> None:
    op.drop_constraint(
        "fk_proposals_uploaded_document_uploaded_by",
        "proposals",
        type_="foreignkey",
    )
    op.drop_column("proposals", "uploaded_document_uploaded_by")
    op.drop_column("proposals", "uploaded_document_uploaded_at")
    op.drop_column("proposals", "uploaded_document_s3_key")
