2026-02-05 19:26:49 +01:00
|
|
|
from sqlalchemy import ForeignKey, SmallInteger, String
|
|
|
|
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
|
|
|
|
|
|
|
|
from app.core.database import Base
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Evolution(Base):
|
|
|
|
|
__tablename__ = "evolutions"
|
|
|
|
|
|
|
|
|
|
id: Mapped[int] = mapped_column(primary_key=True)
|
|
|
|
|
from_pokemon_id: Mapped[int] = mapped_column(ForeignKey("pokemon.id"), index=True)
|
|
|
|
|
to_pokemon_id: Mapped[int] = mapped_column(ForeignKey("pokemon.id"), index=True)
|
|
|
|
|
trigger: Mapped[str] = mapped_column(String(30)) # level-up, trade, use-item, etc.
|
|
|
|
|
min_level: Mapped[int | None] = mapped_column(SmallInteger)
|
|
|
|
|
item: Mapped[str | None] = mapped_column(String(50)) # e.g. thunder-stone
|
|
|
|
|
held_item: Mapped[str | None] = mapped_column(String(50))
|
|
|
|
|
condition: Mapped[str | None] = mapped_column(String(200)) # catch-all for other conditions
|
2026-02-07 20:05:07 +01:00
|
|
|
region: Mapped[str | None] = mapped_column(String(30))
|
2026-02-05 19:26:49 +01:00
|
|
|
|
|
|
|
|
from_pokemon: Mapped["Pokemon"] = relationship(foreign_keys=[from_pokemon_id])
|
|
|
|
|
to_pokemon: Mapped["Pokemon"] = relationship(foreign_keys=[to_pokemon_id])
|
|
|
|
|
|
|
|
|
|
def __repr__(self) -> str:
|
|
|
|
|
return f"<Evolution(id={self.id}, from={self.from_pokemon_id}, to={self.to_pokemon_id}, trigger='{self.trigger}')>"
|