"""add terms to payment_requests

Adds a free-text `terms` column to payment_requests.

Merchants type custom terms into the Virtual Terminal "Create Payment"
form; the text is displayed verbatim in the HPP authorization section.
NULL means no custom terms — the HPP will fall back to the platform
default terms placeholder (HWHPP-302).

Revision ID: c5d6e7f8a9b0
Revises: b4c5d6e7f8a9
Create Date: 2026-03-10 00:04:00.000000

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa
from sqlalchemy import inspect as sa_inspect


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


def upgrade() -> None:
    conn = op.get_bind()
    existing_columns = {c['name'] for c in sa_inspect(conn).get_columns('payment_requests')}
    if 'terms' not in existing_columns:
        op.add_column(
            'payment_requests',
            sa.Column('terms', sa.Text(), nullable=True),
        )


def downgrade() -> None:
    op.drop_column('payment_requests', 'terms')
