refactor(project): use unified utcnow

This commit is contained in:
MingxuanGame
2025-08-22 11:27:45 +00:00
parent da66420eaa
commit 9b00dbda28
49 changed files with 201 additions and 167 deletions

View File

@@ -1,6 +1,6 @@
from __future__ import annotations
from datetime import UTC, datetime
from datetime import UTC
from typing import Literal
from app.database.beatmap import Beatmap, BeatmapResp
@@ -17,6 +17,7 @@ from app.dependencies.user import get_client_user, get_current_user
from app.models.room import RoomCategory, RoomStatus
from app.service.room import create_playlist_room_from_api
from app.signalr.hub import MultiplayerHubs
from app.utils import utcnow
from .router import router
@@ -50,7 +51,7 @@ async def get_all_rooms(
):
resp_list: list[RoomResp] = []
where_clauses: list[ColumnElement[bool]] = [col(Room.category) == category]
now = datetime.now(UTC)
now = utcnow()
if status is not None:
where_clauses.append(col(Room.status) == status)
if mode == "open":
@@ -112,12 +113,12 @@ async def _participate_room(room_id: int, user_id: int, db_room: Room, session:
participated_user = RoomParticipatedUser(
room_id=room_id,
user_id=user_id,
joined_at=datetime.now(UTC),
joined_at=utcnow(),
)
session.add(participated_user)
else:
participated_user.left_at = None
participated_user.joined_at = datetime.now(UTC)
participated_user.joined_at = utcnow()
db_room.participant_count += 1
await redis.publish("chat:room:joined", f"{db_room.channel_id}:{user_id}")
@@ -185,7 +186,7 @@ async def delete_room(
if db_room is None:
raise HTTPException(404, "Room not found")
else:
db_room.ends_at = datetime.now(UTC)
db_room.ends_at = utcnow()
await db.commit()
return None
@@ -238,7 +239,7 @@ async def remove_user_from_room(
)
).first()
if participated_user is not None:
participated_user.left_at = datetime.now(UTC)
participated_user.left_at = utcnow()
if db_room.participant_count > 0:
db_room.participant_count -= 1
await redis.publish("chat:room:left", f"{db_room.channel_id}:{user_id}")

View File

@@ -1,6 +1,6 @@
from __future__ import annotations
from datetime import UTC, date, datetime
from datetime import UTC, date
import math
import time
@@ -50,6 +50,7 @@ from app.models.score import (
from app.service.user_cache_service import get_user_cache_service
from app.storage.base import StorageService
from app.storage.local import LocalStorageService
from app.utils import utcnow
from .router import router
@@ -166,7 +167,7 @@ async def submit_score(
total_users = (await db.exec(select(func.count()).select_from(User))).one()
if resp.rank_global is not None and resp.rank_global <= min(math.ceil(float(total_users) * 0.01), 50):
rank_event = Event(
created_at=datetime.now(UTC),
created_at=utcnow(),
type=EventType.RANK,
user_id=score.user_id,
user=score.user,
@@ -451,7 +452,7 @@ async def create_playlist_score(
if not room:
raise HTTPException(status_code=404, detail="Room not found")
db_room_time = room.ends_at.replace(tzinfo=UTC) if room.ends_at else None
if db_room_time and db_room_time < datetime.now(UTC).replace(tzinfo=UTC):
if db_room_time and db_room_time < utcnow().replace(tzinfo=UTC):
raise HTTPException(status_code=400, detail="Room has ended")
item = (await session.exec(select(Playlist).where(Playlist.id == playlist_id, Playlist.room_id == room_id))).first()
if not item:

View File

@@ -1,6 +1,6 @@
from __future__ import annotations
from datetime import UTC, datetime, timedelta
from datetime import timedelta
from typing import Literal
from app.config import settings
@@ -22,6 +22,7 @@ from app.log import logger
from app.models.score import GameMode
from app.models.user import BeatmapsetType
from app.service.user_cache_service import get_user_cache_service
from app.utils import utcnow
from .router import router
@@ -338,7 +339,7 @@ async def get_user_scores(
where_clause &= exists().where(col(PPBestScore.score_id) == Score.id)
order_by = col(Score.pp).desc()
elif type == "recent":
where_clause &= Score.ended_at > datetime.now(UTC) - timedelta(hours=24)
where_clause &= Score.ended_at > utcnow() - timedelta(hours=24)
order_by = col(Score.ended_at).desc()
elif type == "firsts":
# TODO