from sqlalchemy import ForeignKey, SmallInteger, String, UniqueConstraint from sqlalchemy.orm import Mapped, mapped_column, relationship from app.core.database import Base class RouteEncounter(Base): __tablename__ = "route_encounters" __table_args__ = ( UniqueConstraint( "route_id", "pokemon_id", "encounter_method", name="uq_route_pokemon_method" ), ) id: Mapped[int] = mapped_column(primary_key=True) route_id: Mapped[int] = mapped_column(ForeignKey("routes.id"), index=True) pokemon_id: Mapped[int] = mapped_column(ForeignKey("pokemon.id"), index=True) encounter_method: Mapped[str] = mapped_column(String(30)) encounter_rate: Mapped[int] = mapped_column(SmallInteger) route: Mapped["Route"] = relationship(back_populates="route_encounters") pokemon: Mapped["Pokemon"] = relationship(back_populates="route_encounters") def __repr__(self) -> str: return f""