From d23de2c166960639beff4074d65292dd1d7805e5 Mon Sep 17 00:00:00 2001 From: jimmy-sketch Date: Sat, 26 Jul 2025 23:03:45 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"fix(api):=20=E4=BF=AE=E5=A4=8D/beatma?= =?UTF-8?q?ps/{beatmap}/scores/users/{user}=E7=AB=AF=E7=82=B9=E4=B8=AD?= =?UTF-8?q?=E4=B8=8D=E6=AD=A3=E7=A1=AE=E7=9A=84=E8=AE=A1=E7=AE=97=E6=8E=92?= =?UTF-8?q?=E5=90=8D=E7=9A=84=E7=AE=97=E6=B3=95"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit b69cff6bd4e7c032be5bb529d869bcea7d9e64bb. --- app/router/beatmap.py | 46 ++++++++++++++++--------------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/app/router/beatmap.py b/app/router/beatmap.py index 27555ad..697cf0a 100644 --- a/app/router/beatmap.py +++ b/app/router/beatmap.py @@ -33,11 +33,9 @@ async def get_beatmap( await db.exec( select(Beatmap) .options( - joinedload( - Beatmap.beatmapset # pyright: ignore[reportArgumentType] - ).selectinload( + joinedload(Beatmap.beatmapset).selectinload( # pyright: ignore[reportArgumentType] Beatmapset.beatmaps # pyright: ignore[reportArgumentType] - ) + ) ) .where(Beatmap.id == bid) ) @@ -77,7 +75,7 @@ async def batch_get_beatmaps( select(Beatmap) .options( joinedload( - Beatmap.beatmapset # pyright: ignore[reportArgumentType] + Beatmap.beatmapset # pyright: ignore[reportArgumentType] ).selectinload( Beatmapset.beatmaps # pyright: ignore[reportArgumentType] ) @@ -92,8 +90,8 @@ async def batch_get_beatmaps( select(Beatmap) .options( joinedload( - Beatmap.beatmapset # pyright: ignore[reportArgumentType] - ).selectinload( + Beatmap.beatmapset # pyright: ignore[reportArgumentType] + ).selectinload( Beatmapset.beatmaps # pyright: ignore[reportArgumentType] ) ) @@ -146,7 +144,6 @@ async def get_beatmap_scores( ) .where(Score.beatmap_id == beatmap) .where(Score.user_id == current_user.id) - .order_by(col(Score.classic_total_score).desc()) ) ).first() @@ -179,29 +176,22 @@ async def get_user_beatmap_score( raise HTTPException( status_code=404, detail="This server only contains non-legacy scores" ) - all_scores = ( + user_score = ( await db.exec( select(Score) .options( joinedload(Score.beatmap) # pyright: ignore[reportArgumentType] .joinedload(Beatmap.beatmapset) # pyright: ignore[reportArgumentType] .selectinload( - Beatmapset.beatmaps # pyright: ignore[reportArgumentType] - ) + Beatmapset.beatmaps # pyright: ignore[reportArgumentType] + ) ) - .where(Score.gamemode == mode) .where(Score.beatmap_id == beatmap) + .where(Score.user_id == user) + .where(Score.gamemode == mode) .order_by(col(Score.classic_total_score).desc()) ) - ).all() - - rank = 1 - user_score = None - for score in all_scores: - if score.user_id == user: - user_score = score - break - rank += 1 + ).first() if not user_score: raise HTTPException( @@ -209,7 +199,7 @@ async def get_user_beatmap_score( ) else: return BeatmapUserScore( - position=rank, + position=user_score.position if user_score.position is not None else 0, score=ScoreResp.from_db(user_score), ) @@ -228,24 +218,22 @@ async def get_user_all_beatmap_scores( db: AsyncSession = Depends(get_db), ): if legacy_only: - raise HTTPException( - status_code=404, detail="This server only contains non-legacy scores" - ) - all_user_scores = ( + raise HTTPException(status_code=404,detail="This server only contains non-legacy scores") + all_user_scores=( await db.exec( select(Score) .options( joinedload(Score.beatmap) # pyright: ignore[reportArgumentType] .joinedload(Beatmap.beatmapset) # pyright: ignore[reportArgumentType] .selectinload( - Beatmapset.beatmaps # pyright: ignore[reportArgumentType] + Beatmapset.beatmaps # pyright: ignore[reportArgumentType] ) ) - .where(Score.gamemode == ruleset) + .where(Score.gamemode==ruleset) .where(Score.beatmap_id == beatmap) .where(Score.user_id == user) .order_by(col(Score.classic_total_score).desc()) ) ).all() - + return [ScoreResp.from_db(score) for score in all_user_scores]