refactor(beatmap,beatmapset): use to ensure beatmap exists
This commit is contained in:
@@ -12,7 +12,7 @@ from .api_router import router
|
||||
|
||||
from fastapi import Depends, Form, HTTPException, Query
|
||||
from fastapi.responses import RedirectResponse
|
||||
from httpx import HTTPStatusError
|
||||
from httpx import HTTPError
|
||||
from sqlmodel import select
|
||||
from sqlmodel.ext.asyncio.session import AsyncSession
|
||||
|
||||
@@ -24,22 +24,10 @@ async def lookup_beatmapset(
|
||||
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)
|
||||
beatmap = await Beatmap.get_or_fetch(db, fetcher, bid=beatmap_id)
|
||||
resp = await BeatmapsetResp.from_db(
|
||||
beatmap.beatmapset, session=db, user=current_user
|
||||
)
|
||||
return resp
|
||||
|
||||
|
||||
@@ -50,18 +38,13 @@ async def get_beatmapset(
|
||||
db: AsyncSession = Depends(get_db),
|
||||
fetcher: Fetcher = Depends(get_fetcher),
|
||||
):
|
||||
beatmapset = (await db.exec(select(Beatmapset).where(Beatmapset.id == sid))).first()
|
||||
if not beatmapset:
|
||||
try:
|
||||
resp = await fetcher.get_beatmapset(sid)
|
||||
await Beatmapset.from_resp(db, resp)
|
||||
except HTTPStatusError:
|
||||
raise HTTPException(status_code=404, detail="Beatmapset not found")
|
||||
else:
|
||||
resp = await BeatmapsetResp.from_db(
|
||||
try:
|
||||
beatmapset = await Beatmapset.get_or_fetch(db, fetcher, sid)
|
||||
return await BeatmapsetResp.from_db(
|
||||
beatmapset, session=db, include=["recent_favourites"], user=current_user
|
||||
)
|
||||
return resp
|
||||
except HTTPError:
|
||||
raise HTTPException(status_code=404, detail="Beatmapset not found")
|
||||
|
||||
|
||||
@router.get("/beatmapsets/{beatmapset}/download", tags=["beatmapset"])
|
||||
|
||||
Reference in New Issue
Block a user