from typing import Optional

from sqlalchemy import Integer, String
from sqlalchemy.orm import Mapped, mapped_column

from api.v1.common.base_models import TenantScopedMixin, TimestampMixin
from core.database import Base


class PreviousFraction(Base, TenantScopedMixin, TimestampMixin):
    """
    Tabla de correlación entre fracciones anteriores y actuales.
    Paridad: SFraccionesAnterioresN (Clarion SCAII).
    Se usa en REVISA_UM_REGLA_OCTAVA para aceptar fracciones cambiadas
    cuando el permiso de RO tiene fecha de inicio anterior al corte (~2010-05-31).
    """

    __tablename__ = "previous_fractions"
    __table_args__ = {"schema": "a76"}

    id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
    
    current_fraction: Mapped[Optional[str]] = mapped_column(String(50))   # FraccionActual
    previous_fraction: Mapped[Optional[str]] = mapped_column(String(50))  # FraccionAnterior
