feat: show owner info in admin pages
- Add Owner column to AdminRuns.tsx and AdminGenlockes.tsx - Add owner filter dropdown to both admin pages - Add owner field to GenlockeListItem schema (resolved from first leg's run) - Update frontend types for GenlockeListItem Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -28,6 +28,7 @@ from app.schemas.genlocke import (
|
||||
GenlockeLegDetailResponse,
|
||||
GenlockeLineageResponse,
|
||||
GenlockeListItem,
|
||||
GenlockeOwnerResponse,
|
||||
GenlockeResponse,
|
||||
GenlockeStatsResponse,
|
||||
GenlockeUpdate,
|
||||
@@ -81,7 +82,9 @@ async def list_genlockes(session: AsyncSession = Depends(get_session)):
|
||||
result = await session.execute(
|
||||
select(Genlocke)
|
||||
.options(
|
||||
selectinload(Genlocke.legs).selectinload(GenlockeLeg.run),
|
||||
selectinload(Genlocke.legs)
|
||||
.selectinload(GenlockeLeg.run)
|
||||
.selectinload(NuzlockeRun.owner),
|
||||
)
|
||||
.order_by(Genlocke.created_at.desc())
|
||||
)
|
||||
@@ -91,6 +94,16 @@ async def list_genlockes(session: AsyncSession = Depends(get_session)):
|
||||
for g in genlockes:
|
||||
completed_legs = 0
|
||||
current_leg_order = None
|
||||
owner = None
|
||||
|
||||
# Find first leg (leg_order == 1) to get owner
|
||||
first_leg = next((leg for leg in g.legs if leg.leg_order == 1), None)
|
||||
if first_leg and first_leg.run and first_leg.run.owner:
|
||||
owner = GenlockeOwnerResponse(
|
||||
id=first_leg.run.owner.id,
|
||||
display_name=first_leg.run.owner.display_name,
|
||||
)
|
||||
|
||||
for leg in g.legs:
|
||||
if leg.run and leg.run.status == "completed":
|
||||
completed_legs += 1
|
||||
@@ -106,6 +119,7 @@ async def list_genlockes(session: AsyncSession = Depends(get_session)):
|
||||
total_legs=len(g.legs),
|
||||
completed_legs=completed_legs,
|
||||
current_leg_order=current_leg_order,
|
||||
owner=owner,
|
||||
)
|
||||
)
|
||||
return items
|
||||
|
||||
@@ -1,10 +1,16 @@
|
||||
from datetime import datetime
|
||||
from uuid import UUID
|
||||
|
||||
from app.schemas.base import CamelModel
|
||||
from app.schemas.game import GameResponse
|
||||
from app.schemas.pokemon import PokemonResponse
|
||||
|
||||
|
||||
class GenlockeOwnerResponse(CamelModel):
|
||||
id: UUID
|
||||
display_name: str | None = None
|
||||
|
||||
|
||||
class GenlockeCreate(CamelModel):
|
||||
name: str
|
||||
game_ids: list[int]
|
||||
@@ -92,6 +98,7 @@ class GenlockeListItem(CamelModel):
|
||||
total_legs: int
|
||||
completed_legs: int
|
||||
current_leg_order: int | None = None
|
||||
owner: GenlockeOwnerResponse | None = None
|
||||
|
||||
|
||||
class GenlockeDetailResponse(CamelModel):
|
||||
|
||||
Reference in New Issue
Block a user