from core.database import Base
from sqlalchemy import Index, PrimaryKeyConstraint, String
from sqlalchemy.orm import Mapped, mapped_column


class Country(Base):
    __tablename__ = "countries"  # GPaises
    __table_args__ = (
        PrimaryKeyConstraint("m3_key", name="countries_pkey"),
        Index("ak_country_ame", "ame_key", unique=True),
        {"schema": "public", "extend_existing": True},  # opcional
    )

    m3_key: Mapped[str] = mapped_column(
        String(3), primary_key=True, nullable=False)  # clave M3
    mex_key: Mapped[str] = mapped_column(
        String(2), nullable=False)  # clave país México
    ame_key: Mapped[str] = mapped_column(
        String(2), nullable=False
    )  # clave país América / regional
    description_es: Mapped[str] = mapped_column(
        String(50), nullable=False
    )  # nombre oficial en español
    description_en: Mapped[str] = mapped_column(
        String(50), nullable=False
    )  # nombre en inglés para UI

    def __repr__(self):
        return f"<Country(m3_key={self.m3_key}, mex_key={self.mex_key}, ame_key={self.ame_key}, description_es={self.description_es}, description_en={self.description_en})>"
