"""hwonb014 - pricing tier (association) selection

PRD-HWONB-014 — reverses the prior "association is a fixed platform-wide
settings template" decision (PRD-HWONB-001 §13 Open Question #4 /
PRD-HWONB-002 §1): HubWallet has 5 distinct negotiated GP pricing tiers, so
merchants now pick one during onboarding instead of every merchant getting
whichever single tier `TSYS_BOARDING_ASSOCIATION` happens to hold.

Adds `tsys_association` to `merchant_onboarding_applications` to persist the
merchant's selection locally (mirrors `tsys_app_id`/`tsys_mid`'s pattern of a
plain nullable column, not a `*_data` JSON snapshot, since this section is a
single scalar value rather than a multi-field form).

Revision ID: hwonb014_pricing_tier
Revises: hwonb001_merchant_onboarding
Create Date: 2026-07-15
"""
from typing import Union, Sequence
import sqlalchemy as sa
from alembic import op

revision: str = 'hwonb014_pricing_tier'
down_revision: Union[str, Sequence[str], None] = 'hwonb001_merchant_onboarding'
branch_labels = None
depends_on = None


def upgrade() -> None:
    op.add_column(
        "merchant_onboarding_applications",
        sa.Column("tsys_association", sa.String(length=6), nullable=True),
    )


def downgrade() -> None:
    op.drop_column("merchant_onboarding_applications", "tsys_association")
