refactor(api): use Annotated-style dependency injection

This commit is contained in:
MingxuanGame
2025-10-03 05:41:31 +00:00
parent 37b4eadf79
commit 346c2557cf
45 changed files with 623 additions and 577 deletions

View File

@@ -2,15 +2,14 @@ from __future__ import annotations
import base64
from datetime import date
from typing import Literal
from typing import Annotated, Literal
from app.database.counts import ReplayWatchedCount
from app.database.score import Score
from app.dependencies.database import Database
from app.dependencies.storage import get_storage_service
from app.dependencies.storage import StorageService
from app.models.mods import int_to_mods
from app.models.score import GameMode
from app.storage import StorageService
from .router import router
@@ -34,18 +33,20 @@ class ReplayModel(BaseModel):
)
async def download_replay(
session: Database,
beatmap: int = Query(..., alias="b", description="谱面 ID"),
user: str = Query(..., alias="u", description="用户"),
ruleset_id: int | None = Query(
None,
alias="m",
description="Ruleset ID",
ge=0,
),
score_id: int | None = Query(None, alias="s", description="成绩 ID"),
type: Literal["string", "id"] | None = Query(None, description="用户类型string 用户名称 / id 用户 ID"),
mods: int = Query(0, description="成绩的 MOD"),
storage_service: StorageService = Depends(get_storage_service),
beatmap: Annotated[int, Query(..., alias="b", description="谱面 ID")],
user: Annotated[str, Query(..., alias="u", description="用户")],
storage_service: StorageService,
ruleset_id: Annotated[
int | None,
Query(
alias="m",
description="Ruleset ID",
ge=0,
),
] = None,
score_id: Annotated[int | None, Query(alias="s", description="成绩 ID")] = None,
type: Annotated[Literal["string", "id"] | None, Query(description="用户类型string 用户名称 / id 用户 ID")] = None,
mods: Annotated[int, Query(description="成绩的 MOD")] = 0,
):
mods_ = int_to_mods(mods)
if score_id is not None: