fix(beatmap,beatmapset): fix lookup
This commit is contained in:
@@ -74,7 +74,7 @@ class BatchGetResp(BaseModel):
|
|||||||
@router.get("/beatmaps", tags=["beatmap"], response_model=BatchGetResp)
|
@router.get("/beatmaps", tags=["beatmap"], response_model=BatchGetResp)
|
||||||
@router.get("/beatmaps/", tags=["beatmap"], response_model=BatchGetResp)
|
@router.get("/beatmaps/", tags=["beatmap"], response_model=BatchGetResp)
|
||||||
async def batch_get_beatmaps(
|
async def batch_get_beatmaps(
|
||||||
b_ids: list[int] = Query(alias="id", default_factory=list),
|
b_ids: list[int] = Query(alias="ids[]", default_factory=list),
|
||||||
current_user: User = Depends(get_current_user),
|
current_user: User = Depends(get_current_user),
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
):
|
):
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from typing import Literal
|
from typing import Literal
|
||||||
|
|
||||||
from app.database import Beatmapset, BeatmapsetResp, FavouriteBeatmapset, User
|
from app.database import Beatmap, Beatmapset, BeatmapsetResp, FavouriteBeatmapset, User
|
||||||
from app.dependencies.database import get_db
|
from app.dependencies.database import get_db
|
||||||
from app.dependencies.fetcher import get_fetcher
|
from app.dependencies.fetcher import get_fetcher
|
||||||
from app.dependencies.user import get_current_user
|
from app.dependencies.user import get_current_user
|
||||||
@@ -17,6 +17,32 @@ from sqlmodel import select
|
|||||||
from sqlmodel.ext.asyncio.session import AsyncSession
|
from sqlmodel.ext.asyncio.session import AsyncSession
|
||||||
|
|
||||||
|
|
||||||
|
@router.get("/beatmapsets/lookup", tags=["beatmapset"], response_model=BeatmapsetResp)
|
||||||
|
async def lookup_beatmapset(
|
||||||
|
beatmap_id: int = Query(),
|
||||||
|
current_user: User = Depends(get_current_user),
|
||||||
|
db: AsyncSession = Depends(get_db),
|
||||||
|
fetcher: Fetcher = Depends(get_fetcher),
|
||||||
|
):
|
||||||
|
beatmapset_id = (
|
||||||
|
await db.exec(select(Beatmap.beatmapset_id).where(Beatmap.id == beatmap_id))
|
||||||
|
).first()
|
||||||
|
if not beatmapset_id:
|
||||||
|
try:
|
||||||
|
resp = await fetcher.get_beatmap(beatmap_id)
|
||||||
|
await Beatmap.from_resp(db, resp)
|
||||||
|
await db.refresh(current_user)
|
||||||
|
except HTTPStatusError:
|
||||||
|
raise HTTPException(status_code=404, detail="Beatmapset not found")
|
||||||
|
beatmapset = (
|
||||||
|
await db.exec(select(Beatmapset).where(Beatmapset.id == beatmapset_id))
|
||||||
|
).first()
|
||||||
|
if not beatmapset:
|
||||||
|
raise HTTPException(status_code=404, detail="Beatmapset not found")
|
||||||
|
resp = await BeatmapsetResp.from_db(beatmapset, session=db, user=current_user)
|
||||||
|
return resp
|
||||||
|
|
||||||
|
|
||||||
@router.get("/beatmapsets/{sid}", tags=["beatmapset"], response_model=BeatmapsetResp)
|
@router.get("/beatmapsets/{sid}", tags=["beatmapset"], response_model=BeatmapsetResp)
|
||||||
async def get_beatmapset(
|
async def get_beatmapset(
|
||||||
sid: int,
|
sid: int,
|
||||||
|
|||||||
Reference in New Issue
Block a user