Add genlocke transfer UI with transfer selection modal and backend support
When advancing to the next genlocke leg, users can now select surviving Pokemon to transfer. Transferred Pokemon are bred down to their base evolutionary form and appear as level-1 egg encounters in the next leg. A GenlockeTransfer record links source and target encounters for lineage tracking. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@ from app.models.encounter import Encounter
|
||||
from app.models.evolution import Evolution
|
||||
from app.models.game import Game
|
||||
from app.models.genlocke import Genlocke, GenlockeLeg
|
||||
from app.models.genlocke_transfer import GenlockeTransfer
|
||||
from app.models.nuzlocke_run import NuzlockeRun
|
||||
from app.models.pokemon import Pokemon
|
||||
from app.models.route import Route
|
||||
@@ -20,6 +21,7 @@ __all__ = [
|
||||
"Game",
|
||||
"Genlocke",
|
||||
"GenlockeLeg",
|
||||
"GenlockeTransfer",
|
||||
"NuzlockeRun",
|
||||
"Pokemon",
|
||||
"Route",
|
||||
|
||||
32
backend/src/app/models/genlocke_transfer.py
Normal file
32
backend/src/app/models/genlocke_transfer.py
Normal file
@@ -0,0 +1,32 @@
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import DateTime, ForeignKey, SmallInteger, UniqueConstraint, func
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.core.database import Base
|
||||
|
||||
|
||||
class GenlockeTransfer(Base):
|
||||
__tablename__ = "genlocke_transfers"
|
||||
__table_args__ = (
|
||||
UniqueConstraint("target_encounter_id", name="uq_genlocke_transfers_target"),
|
||||
)
|
||||
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
genlocke_id: Mapped[int] = mapped_column(
|
||||
ForeignKey("genlockes.id", ondelete="CASCADE"), index=True
|
||||
)
|
||||
source_encounter_id: Mapped[int] = mapped_column(
|
||||
ForeignKey("encounters.id"), index=True
|
||||
)
|
||||
target_encounter_id: Mapped[int] = mapped_column(
|
||||
ForeignKey("encounters.id"), unique=True
|
||||
)
|
||||
source_leg_order: Mapped[int] = mapped_column(SmallInteger)
|
||||
target_leg_order: Mapped[int] = mapped_column(SmallInteger)
|
||||
created_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True), server_default=func.now()
|
||||
)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"<GenlockeTransfer(id={self.id}, source={self.source_encounter_id}, target={self.target_encounter_id})>"
|
||||
Reference in New Issue
Block a user