"""pr001: add device_info to payment_requests table."""
from typing import Union, Sequence
import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.engine.reflection import Inspector

revision: str = "pr001_add_device_info_to_payment_requests"
down_revision: Union[str, Sequence[str], None] = "prd010_add_invoice_split_id"
branch_labels = None
depends_on = None


def upgrade() -> None:
    bind = op.get_bind()
    inspector = Inspector.from_engine(bind)
    existing_columns = {col["name"] for col in inspector.get_columns("payment_requests")}
    if "device_info" not in existing_columns:
        op.add_column(
            "payment_requests",
            sa.Column("device_info", JSONB, nullable=True),
        )


def downgrade() -> None:
    op.drop_column("payment_requests", "device_info")
