"""XML enviado y recibido de cada intento de timbrado, en ``fin.invoice_stamps``.

Hasta ahora sólo se guardaba el XML del timbrado exitoso, que es justo el caso en el que
menos falta hace. Cuando el PAC rechaza el comprobante no queda rastro de qué se le mandó
ni de qué contestó: el XML sellado vive en memoria durante la petición y desaparece con
ella, y el cuerpo de la respuesta también. Estas dos columnas apuntan al par enviado/recibido
que se guarda en el almacenamiento por cada intento.

Escrita a mano, no con ``--autogenerate``: ver la nota de la migración h3i4j5k6l7m8.

Revision ID: j5k6l7m8n9o0
Revises: i4j5k6l7m8n9
Create Date: 2026-08-11 00:00:00.000000

"""
from typing import Sequence, Union

import sqlalchemy as sa
from alembic import op

revision: str = "j5k6l7m8n9o0"
down_revision: Union[str, None] = "i4j5k6l7m8n9"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None

_COLUMNAS = (
    ("request_xml_file_key", sa.String(length=512)),
    ("response_xml_file_key", sa.String(length=512)),
)


def upgrade() -> None:
    for nombre, tipo in _COLUMNAS:
        op.add_column("invoice_stamps", sa.Column(nombre, tipo, nullable=True), schema="fin")


def downgrade() -> None:
    # Al revés, para que el orden de la tabla quede como estaba.
    for nombre, _ in reversed(_COLUMNAS):
        op.drop_column("invoice_stamps", nombre, schema="fin")
