from sqlalchemy import Integer, SmallInteger, String from sqlalchemy.dialects.postgresql import ARRAY from sqlalchemy.orm import Mapped, mapped_column, relationship from app.core.database import Base class Pokemon(Base): __tablename__ = "pokemon" id: Mapped[int] = mapped_column(primary_key=True) pokeapi_id: Mapped[int] = mapped_column(Integer, unique=True) national_dex: Mapped[int] = mapped_column(SmallInteger) name: Mapped[str] = mapped_column(String(50)) types: Mapped[list[str]] = mapped_column(ARRAY(String(20))) sprite_url: Mapped[str | None] = mapped_column(String(500)) route_encounters: Mapped[list[RouteEncounter]] = relationship( back_populates="pokemon" ) encounters: Mapped[list[Encounter]] = relationship( foreign_keys="[Encounter.pokemon_id]", back_populates="pokemon" ) def __repr__(self) -> str: return f""