From 65cc57a25436cac6e12ab168a4af786ca76fe71b Mon Sep 17 00:00:00 2001 From: KittenTM Date: Sun, 22 Mar 2026 07:19:38 +0100 Subject: [PATCH] feat: include playerinfo in response --- routes/Ranking.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/routes/Ranking.py b/routes/Ranking.py index b5427b8..8fd17ea 100644 --- a/routes/Ranking.py +++ b/routes/Ranking.py @@ -1,7 +1,7 @@ from fastapi import APIRouter, Depends from sqlalchemy.orm import Session as DBSession from sqlalchemy import desc -from database import SessionLocal, PlayerRank +from database import SessionLocal, PlayerRank, EquipmentLast router = APIRouter() @@ -22,12 +22,14 @@ async def get_leaderboard(db: DBSession = Depends(get_db)): .all() ) top_100_tuples = set(top_100_query) + modes = {0, 1, 2} leaderboard = {} for mode in modes: top_players = ( - db.query(PlayerRank) + db.query(PlayerRank, EquipmentLast) + .outerjoin(EquipmentLast, PlayerRank.PId == EquipmentLast.PId) .filter(PlayerRank.GameMode == mode) .order_by(desc(PlayerRank.RankingScore)) .limit(9) @@ -35,7 +37,7 @@ async def get_leaderboard(db: DBSession = Depends(get_db)): ) mode_results = [] - for player in top_players: + for player, gear in top_players: player_data = { "PId": player.PId, "MiiName": player.MiiName, @@ -43,6 +45,10 @@ async def get_leaderboard(db: DBSession = Depends(get_db)): "WinSum": player.WinSum, "LoseSum": player.LoseSum, "RankingScore": round(player.RankingScore, 2), + "weapon": gear.weapon if gear else None, + "headgear": gear.Gear_Head if gear else None, + "clothes": gear.Gear_Clothes if gear else None, + "shoes": gear.Gear_Shoes if gear else None, } if mode == 2: