fix(score): return user score & remove duplicated scores

This commit is contained in:
MingxuanGame
2025-08-18 09:48:46 +00:00
parent 72c3778424
commit 7510b4fae1
3 changed files with 47 additions and 20 deletions

View File

@@ -167,7 +167,7 @@ async def get_scores(
)
).all()
else:
scores, _ = await get_leaderboard(
scores, _, _ = await get_leaderboard(
session,
beatmap_id,
GameMode.from_int_extra(ruleset_id),

View File

@@ -169,7 +169,8 @@ async def submit_score(
class BeatmapScores(BaseModel):
scores: list[ScoreResp]
userScore: ScoreResp | None = None
user_score: BeatmapUserScore | None = None
score_count: int = 0
@router.get(
@@ -201,14 +202,21 @@ async def get_beatmap_scores(
status_code=404, detail="this server only contains lazer scores"
)
all_scores, user_score = await get_leaderboard(
all_scores, user_score, count = await get_leaderboard(
db, beatmap_id, mode, type=type, user=current_user, limit=limit, mods=mods
)
return BeatmapScores(
user_score_resp = await ScoreResp.from_db(db, user_score) if user_score else None
resp = BeatmapScores(
scores=[await ScoreResp.from_db(db, score) for score in all_scores],
userScore=await ScoreResp.from_db(db, user_score) if user_score else None,
user_score=BeatmapUserScore(
score=user_score_resp, position=user_score_resp.rank_global or 0
)
if user_score_resp
else None,
score_count=count,
)
return resp
class BeatmapUserScore(BaseModel):