refactor(app): update database code

This commit is contained in:
MingxuanGame
2025-08-18 16:37:30 +00:00
parent 6bae937e01
commit 1c65b21bb9
34 changed files with 167 additions and 188 deletions

View File

@@ -4,12 +4,11 @@ from datetime import UTC, datetime, timedelta
from app.database import RankHistory, UserStatistics
from app.database.rank_history import RankTop
from app.dependencies.database import engine
from app.dependencies.database import with_db
from app.dependencies.scheduler import get_scheduler
from app.models.score import GameMode
from sqlmodel import col, exists, select, update
from sqlmodel.ext.asyncio.session import AsyncSession
@get_scheduler().scheduled_job(
@@ -18,7 +17,7 @@ from sqlmodel.ext.asyncio.session import AsyncSession
async def calculate_user_rank(is_today: bool = False):
today = datetime.now(UTC).date()
target_date = today if is_today else today - timedelta(days=1)
async with AsyncSession(engine) as session:
async with with_db() as session:
for gamemode in GameMode:
users = await session.exec(
select(UserStatistics)

View File

@@ -3,15 +3,14 @@ from __future__ import annotations
from app.const import BANCHOBOT_ID
from app.database.lazer_user import User
from app.database.statistics import UserStatistics
from app.dependencies.database import engine
from app.dependencies.database import with_db
from app.models.score import GameMode
from sqlmodel import exists, select
from sqlmodel.ext.asyncio.session import AsyncSession
async def create_banchobot():
async with AsyncSession(engine) as session:
async with with_db() as session:
is_exist = (
await session.exec(select(exists()).where(User.id == BANCHOBOT_ID))
).first()

View File

@@ -6,7 +6,7 @@ import json
from app.const import BANCHOBOT_ID
from app.database.playlists import Playlist
from app.database.room import Room
from app.dependencies.database import engine, get_redis
from app.dependencies.database import get_redis, with_db
from app.dependencies.scheduler import get_scheduler
from app.log import logger
from app.models.metadata_hub import DailyChallengeInfo
@@ -16,13 +16,12 @@ from app.models.room import RoomCategory
from .room import create_playlist_room
from sqlmodel import col, select
from sqlmodel.ext.asyncio.session import AsyncSession
async def create_daily_challenge_room(
beatmap: int, ruleset_id: int, duration: int, required_mods: list[APIMod] = []
) -> Room:
async with AsyncSession(engine) as session:
async with with_db() as session:
today = datetime.now(UTC).date()
return await create_playlist_room(
session=session,
@@ -52,7 +51,7 @@ async def daily_challenge_job():
key = f"daily_challenge:{now.date()}"
if not await redis.exists(key):
return
async with AsyncSession(engine) as session:
async with with_db() as session:
room = (
await session.exec(
select(Room).where(

View File

@@ -4,16 +4,15 @@ from app.config import settings
from app.const import BANCHOBOT_ID
from app.database.lazer_user import User
from app.database.statistics import UserStatistics
from app.dependencies.database import engine
from app.dependencies.database import with_db
from app.models.score import GameMode
from sqlalchemy import exists
from sqlmodel import select
from sqlmodel.ext.asyncio.session import AsyncSession
async def create_rx_statistics():
async with AsyncSession(engine) as session:
async with with_db() as session:
users = (await session.exec(select(User.id))).all()
for i in users:
if i == BANCHOBOT_ID:

View File

@@ -4,13 +4,12 @@ from typing import TYPE_CHECKING
from app.database import PlaylistBestScore, Score
from app.database.playlist_best_score import get_position
from app.dependencies.database import engine
from app.dependencies.database import with_db
from app.models.metadata_hub import MultiplayerRoomScoreSetEvent
from .base import RedisSubscriber
from sqlmodel import select
from sqlmodel.ext.asyncio.session import AsyncSession
if TYPE_CHECKING:
from app.signalr.hub import MetadataHub
@@ -45,7 +44,7 @@ class ScoreSubscriber(RedisSubscriber):
async def _notify_room_score_processed(self, score_id: int):
if not self.metadata_hub:
return
async with AsyncSession(engine) as session:
async with with_db() as session:
score = await session.get(Score, score_id)
if (
not score