fix(multiplayer): fix logic errors in a room's end time
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from datetime import UTC, datetime
|
from datetime import UTC, datetime, timedelta
|
||||||
from typing import Literal
|
from typing import Literal
|
||||||
|
|
||||||
from app.database.beatmap import Beatmap, BeatmapResp
|
from app.database.beatmap import Beatmap, BeatmapResp
|
||||||
@@ -42,8 +42,8 @@ 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.ended_at is not None and room.ended_at > datetime.now(UTC):
|
# if room.ends_at is not None and room.ends_at > datetime.now(UTC):
|
||||||
resp_list.append(await RoomResp.from_db(room))
|
resp_list.append(await RoomResp.from_db(room))
|
||||||
return resp_list
|
return resp_list
|
||||||
|
|
||||||
|
|
||||||
@@ -78,9 +78,9 @@ async def create_room(
|
|||||||
db_room = room.to_room()
|
db_room = room.to_room()
|
||||||
db_room.host_id = current_user.id if current_user.id else 1
|
db_room.host_id = current_user.id if current_user.id else 1
|
||||||
db_room.starts_at = datetime.now(UTC)
|
db_room.starts_at = datetime.now(UTC)
|
||||||
# db_room.ended_at = db_room.starts_at + timedelta(
|
db_room.ends_at = db_room.starts_at + timedelta(
|
||||||
# minutes=db_room.duration if db_room.duration is not None else 0
|
minutes=db_room.duration if db_room.duration is not None else 0
|
||||||
# )
|
)
|
||||||
db.add(db_room)
|
db.add(db_room)
|
||||||
await db.commit()
|
await db.commit()
|
||||||
await db.refresh(db_room)
|
await db.refresh(db_room)
|
||||||
@@ -134,6 +134,7 @@ async def add_user_to_room(room: int, user: int, db: AsyncSession = Depends(get_
|
|||||||
if db_room is not None:
|
if db_room is not None:
|
||||||
db_room.participant_count += 1
|
db_room.participant_count += 1
|
||||||
await db.commit()
|
await db.commit()
|
||||||
|
await db.refresh(db_room)
|
||||||
resp = await RoomResp.from_db(db_room)
|
resp = await RoomResp.from_db(db_room)
|
||||||
await db.refresh(db_room)
|
await db.refresh(db_room)
|
||||||
for item in db_room.playlist:
|
for item in db_room.playlist:
|
||||||
|
|||||||
@@ -285,7 +285,10 @@ async def create_playlist_score(
|
|||||||
room = await session.get(Room, room_id)
|
room = await session.get(Room, room_id)
|
||||||
if not room:
|
if not room:
|
||||||
raise HTTPException(status_code=404, detail="Room not found")
|
raise HTTPException(status_code=404, detail="Room not found")
|
||||||
if room.ended_at and room.ended_at < datetime.now(UTC):
|
db_room_time = (
|
||||||
|
room.ends_at.replace(tzinfo=UTC) if room.ends_at is not None else room.starts_at
|
||||||
|
)
|
||||||
|
if db_room_time and db_room_time < datetime.now(UTC):
|
||||||
raise HTTPException(status_code=400, detail="Room has ended")
|
raise HTTPException(status_code=400, detail="Room has ended")
|
||||||
item = (
|
item = (
|
||||||
await session.exec(
|
await session.exec(
|
||||||
|
|||||||
Reference in New Issue
Block a user