refactor(score): replace MODE_TO_INT INT_TO_MODE with int(mode) GameMode.from_int

This commit is contained in:
MingxuanGame
2025-08-14 13:04:59 +00:00
parent a8906b8194
commit 46a1d049fe
11 changed files with 153 additions and 117 deletions

View File

@@ -13,7 +13,6 @@ from app.fetcher import Fetcher
from app.models.beatmap import BeatmapAttributes
from app.models.mods import APIMod, int_to_mods
from app.models.score import (
INT_TO_MODE,
GameMode,
)
@@ -168,7 +167,7 @@ async def get_beatmap_attributes(
default=None, description="指定 ruleset为空则使用谱面自身模式"
),
ruleset_id: int | None = Query(
default=None, description="以数字指定 ruleset (与 ruleset 二选一)"
default=None, description="以数字指定 ruleset (与 ruleset 二选一)", ge=0, le=3
),
redis: Redis = Depends(get_redis),
db: AsyncSession = Depends(get_db),
@@ -185,7 +184,7 @@ async def get_beatmap_attributes(
mods_.append(APIMod(acronym=i, settings={}))
mods_.sort(key=lambda x: x["acronym"])
if ruleset_id is not None and ruleset is None:
ruleset = INT_TO_MODE[ruleset_id]
ruleset = GameMode.from_int(ruleset_id)
if ruleset is None:
beatmap_db = await Beatmap.get_or_fetch(db, fetcher, beatmap_id)
ruleset = beatmap_db.mode

View File

@@ -37,7 +37,6 @@ from app.dependencies.user import get_client_user, get_current_user
from app.fetcher import Fetcher
from app.models.room import RoomCategory
from app.models.score import (
INT_TO_MODE,
GameMode,
LeaderboardType,
Rank,
@@ -187,7 +186,7 @@ async def get_user_beatmap_score(
beatmap_id: int = Path(description="谱面 ID"),
user_id: int = Path(description="用户 ID"),
legacy_only: bool = Query(None, description="是否只查询 Stable 分数"),
mode: str = Query(None, description="指定 ruleset (可选)"),
mode: GameMode | None = Query(None, description="指定 ruleset (可选)"),
mods: str = Query(None, description="筛选使用的 Mods (暂未实现)"),
current_user: User = Security(get_current_user, scopes=["public"]),
db: AsyncSession = Depends(get_db),
@@ -232,7 +231,7 @@ async def get_user_all_beatmap_scores(
beatmap_id: int = Path(description="谱面 ID"),
user_id: int = Path(description="用户 ID"),
legacy_only: bool = Query(None, description="是否只查询 Stable 分数"),
ruleset: str = Query(None, description="指定 ruleset (可选)"),
ruleset: GameMode | None = Query(None, description="指定 ruleset (可选)"),
current_user: User = Security(get_current_user, scopes=["public"]),
db: AsyncSession = Depends(get_db),
):
@@ -275,7 +274,7 @@ async def create_solo_score(
score_token = ScoreToken(
user_id=current_user.id,
beatmap_id=beatmap_id,
ruleset_id=INT_TO_MODE[ruleset_id],
ruleset_id=GameMode.from_int(ruleset_id),
)
db.add(score_token)
await db.commit()
@@ -370,7 +369,7 @@ async def create_playlist_score(
score_token = ScoreToken(
user_id=current_user.id,
beatmap_id=beatmap_id,
ruleset_id=INT_TO_MODE[ruleset_id],
ruleset_id=GameMode.from_int(ruleset_id),
playlist_item_id=playlist_id,
)
session.add(score_token)