fix(beatmap): fix beatmap.beatmapset is None when it from from_resp
This commit is contained in:
@@ -90,8 +90,7 @@ class Beatmap(BeatmapBase, table=True):
|
|||||||
if not (await session.exec(select(exists()).where(Beatmap.id == resp.id))).first():
|
if not (await session.exec(select(exists()).where(Beatmap.id == resp.id))).first():
|
||||||
session.add(beatmap)
|
session.add(beatmap)
|
||||||
await session.commit()
|
await session.commit()
|
||||||
beatmap = (await session.exec(select(Beatmap).where(Beatmap.id == resp.id))).first()
|
beatmap = (await session.exec(select(Beatmap).where(Beatmap.id == resp.id))).one()
|
||||||
assert beatmap is not None, "Beatmap should not be None after commit"
|
|
||||||
return beatmap
|
return beatmap
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@@ -124,9 +123,14 @@ class Beatmap(BeatmapBase, table=True):
|
|||||||
bid: int | None = None,
|
bid: int | None = None,
|
||||||
md5: str | None = None,
|
md5: str | None = None,
|
||||||
) -> "Beatmap":
|
) -> "Beatmap":
|
||||||
beatmap = (
|
stmt = select(Beatmap)
|
||||||
await session.exec(select(Beatmap).where(Beatmap.id == bid if bid is not None else Beatmap.checksum == md5))
|
if bid is not None:
|
||||||
).first()
|
stmt = stmt.where(Beatmap.id == bid)
|
||||||
|
elif md5 is not None:
|
||||||
|
stmt = stmt.where(Beatmap.checksum == md5)
|
||||||
|
else:
|
||||||
|
raise ValueError("Either bid or md5 must be provided")
|
||||||
|
beatmap = (await session.exec(stmt)).first()
|
||||||
if not beatmap:
|
if not beatmap:
|
||||||
resp = await fetcher.get_beatmap(bid, md5)
|
resp = await fetcher.get_beatmap(bid, md5)
|
||||||
r = await session.exec(select(Beatmapset.id).where(Beatmapset.id == resp.beatmapset_id))
|
r = await session.exec(select(Beatmapset.id).where(Beatmapset.id == resp.beatmapset_id))
|
||||||
|
|||||||
@@ -167,6 +167,7 @@ class Beatmapset(AsyncAttrs, BeatmapsetBase, table=True):
|
|||||||
session.add(beatmapset)
|
session.add(beatmapset)
|
||||||
await session.commit()
|
await session.commit()
|
||||||
await Beatmap.from_resp_batch(session, resp.beatmaps, from_=from_)
|
await Beatmap.from_resp_batch(session, resp.beatmaps, from_=from_)
|
||||||
|
beatmapset = (await session.exec(select(Beatmapset).where(Beatmapset.id == resp.id))).one()
|
||||||
return beatmapset
|
return beatmapset
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
Reference in New Issue
Block a user