feat(daily-challenge): create on startup

This commit is contained in:
MingxuanGame
2025-08-09 14:59:51 +00:00
parent dcdbac8cb0
commit 7f224aee8d
2 changed files with 15 additions and 0 deletions

View File

@@ -14,6 +14,7 @@ from app.models.room import RoomCategory
from .room import create_playlist_room
from sqlmodel import col, select
from sqlmodel.ext.asyncio.session import AsyncSession
@@ -50,6 +51,18 @@ async def daily_challenge_job():
key = f"daily_challenge:{today}"
if not await redis.exists(key):
return
async with AsyncSession(engine) as session:
room = (
await session.exec(
select(Room).where(
Room.category == RoomCategory.DAILY_CHALLENGE,
col(Room.ends_at) > datetime.now(UTC),
)
)
).first()
if room:
return
try:
beatmap = await redis.hget(key, "beatmap") # pyright: ignore[reportGeneralTypeIssues]
ruleset_id = await redis.hget(key, "ruleset_id") # pyright: ignore[reportGeneralTypeIssues]

View File

@@ -13,6 +13,7 @@ from app.router import (
fetcher_router,
signalr_router,
)
from app.service.daily_challenge import daily_challenge_job
from fastapi import FastAPI
@@ -23,6 +24,7 @@ async def lifespan(app: FastAPI):
await create_tables()
await get_fetcher() # 初始化 fetcher
init_scheduler()
await daily_challenge_job()
# on shutdown
yield
stop_scheduler()