fix(score): cannot fetch leaderboard with mods
This commit is contained in:
@@ -2,7 +2,6 @@ from datetime import UTC, datetime, timedelta
|
|||||||
import json
|
import json
|
||||||
from typing import TYPE_CHECKING, NotRequired, TypedDict
|
from typing import TYPE_CHECKING, NotRequired, TypedDict
|
||||||
|
|
||||||
from app.database.pp_best_score import PPBestScore
|
|
||||||
from app.models.model import UTCBaseModel
|
from app.models.model import UTCBaseModel
|
||||||
from app.models.score import GameMode
|
from app.models.score import GameMode
|
||||||
from app.models.user import Country, Page
|
from app.models.user import Country, Page
|
||||||
@@ -265,6 +264,7 @@ class UserResp(UserBase):
|
|||||||
|
|
||||||
from .best_score import BestScore
|
from .best_score import BestScore
|
||||||
from .favourite_beatmapset import FavouriteBeatmapset
|
from .favourite_beatmapset import FavouriteBeatmapset
|
||||||
|
from .pp_best_score import PPBestScore
|
||||||
from .relationship import Relationship, RelationshipResp, RelationshipType
|
from .relationship import Relationship, RelationshipResp, RelationshipType
|
||||||
from .score import Score
|
from .score import Score
|
||||||
|
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ async def _score_where(
|
|||||||
text(
|
text(
|
||||||
"JSON_CONTAINS(total_score_best_scores.mods, :w)"
|
"JSON_CONTAINS(total_score_best_scores.mods, :w)"
|
||||||
" AND JSON_CONTAINS(:w, total_score_best_scores.mods)"
|
" AND JSON_CONTAINS(:w, total_score_best_scores.mods)"
|
||||||
) # pyright: ignore[reportArgumentType]
|
).params(w=json.dumps(mods)) # pyright: ignore[reportArgumentType]
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
@@ -346,8 +346,6 @@ async def get_leaderboard(
|
|||||||
.limit(limit)
|
.limit(limit)
|
||||||
.order_by(col(BestScore.total_score).desc())
|
.order_by(col(BestScore.total_score).desc())
|
||||||
)
|
)
|
||||||
if mods:
|
|
||||||
query = query.params(w=json.dumps(mods))
|
|
||||||
extra_need = 0
|
extra_need = 0
|
||||||
for s in await session.exec(query):
|
for s in await session.exec(query):
|
||||||
if s.user_id in scores:
|
if s.user_id in scores:
|
||||||
|
|||||||
Reference in New Issue
Block a user