"""Seed TSYS payment provider

Revision ID: tsys001_seed_tsys
Revises: dev001_add_req_resp_body
Create Date: 2026-04-10
"""
from typing import Sequence, Union
from alembic import op
from sqlalchemy import text

revision: str = 'tsys001_seed_tsys'
down_revision: Union[str, Sequence[str], None] = 'dev001_add_req_resp_body'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    op.execute(text("""
        INSERT INTO payment_providers (
            name, slug, description, is_active, is_default,
            supported_payment_methods, onboarding_schema, created_at
        )
        VALUES (
            'TSYS', 'tsys', 'TSYS TransIT payment processing', true, false,
            '{"card": true, "ach": true}'::json,
            '{"fields": [{"key": "merchant_id", "label": "TSYS Merchant ID", "type": "text", "required": true, "hint": "12-15 character merchant identifier from your TSYS acquirer"}, {"key": "device_id", "label": "Device ID", "type": "text", "required": true, "hint": "24-character device identifier from TSYS"}, {"key": "user_id", "label": "User ID", "type": "text", "required": true, "hint": "TransIT MultiPASS user ID \u2014 used once, not stored"}, {"key": "password", "label": "Password", "type": "password", "required": true, "ephemeral": true, "hint": "Used once to generate a transaction key, then discarded"}], "instructions": "Enter the credentials provided by TSYS or your acquiring bank. Your User ID and Password are used once to generate a secure transaction key and are never stored."}'::json,
            NOW()
        )
        ON CONFLICT (slug) DO NOTHING
    """))


def downgrade() -> None:
    op.execute(text("DELETE FROM payment_providers WHERE slug = 'tsys'"))
