feat(multiplayer): add basic filter options for /rooms API
This commit is contained in:
@@ -32,7 +32,7 @@ async def get_all_rooms(
|
|||||||
mode: Literal["open", "ended", "participated", "owned", None] = Query(
|
mode: Literal["open", "ended", "participated", "owned", None] = Query(
|
||||||
default="open"
|
default="open"
|
||||||
), # TODO: 对房间根据状态进行筛选
|
), # TODO: 对房间根据状态进行筛选
|
||||||
category: str = Query(default="realtime"), # TODO
|
category: str | None = Query(None), # TODO
|
||||||
status: RoomStatus | None = Query(None),
|
status: RoomStatus | None = Query(None),
|
||||||
db: AsyncSession = Depends(get_db),
|
db: AsyncSession = Depends(get_db),
|
||||||
fetcher: Fetcher = Depends(get_fetcher),
|
fetcher: Fetcher = Depends(get_fetcher),
|
||||||
@@ -42,8 +42,15 @@ async def get_all_rooms(
|
|||||||
resp_list: list[RoomResp] = []
|
resp_list: list[RoomResp] = []
|
||||||
db_rooms = (await db.exec(select(Room).where(True))).unique().all()
|
db_rooms = (await db.exec(select(Room).where(True))).unique().all()
|
||||||
for room in db_rooms:
|
for room in db_rooms:
|
||||||
# if room.ends_at is not None and room.ends_at > datetime.now(UTC):
|
if category == "realtime":
|
||||||
resp_list.append(await RoomResp.from_db(room))
|
if room.id in MultiplayerHubs.rooms:
|
||||||
|
resp_list.append(await RoomResp.from_db(room))
|
||||||
|
elif category is not None:
|
||||||
|
if category == room.category:
|
||||||
|
resp_list.append(await RoomResp.from_db(room))
|
||||||
|
else:
|
||||||
|
if room.id not in MultiplayerHubs.rooms:
|
||||||
|
resp_list.append(await RoomResp.from_db(room))
|
||||||
return resp_list
|
return resp_list
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user