ongeki: proper handling of music ranking list

This commit is contained in:
akanyan
2025-01-06 18:39:49 +00:00
parent 0cf41ff389
commit fa667d15f2
4 changed files with 75 additions and 32 deletions

View File

@@ -4,11 +4,13 @@ from sqlalchemy import Column, Table, UniqueConstraint
from sqlalchemy.dialects.mysql import insert
from sqlalchemy.engine import Row
from sqlalchemy.schema import ForeignKey
from sqlalchemy.sql import select
from sqlalchemy.sql import select, func
from sqlalchemy.types import TIMESTAMP, Boolean, Float, Integer, String
from core.data.schema import BaseData, metadata
from datetime import datetime, timedelta
score_best: Table = Table(
"ongeki_score_best",
metadata,
@@ -209,6 +211,18 @@ class OngekiScoreData(BaseData):
return None
return result.lastrowid
async def get_rankings(self, date: datetime) -> Optional[List[Row]]:
sql = (
select([func.count(playlog.c.id), playlog.c.musicId])
.where(playlog.c.playDate == date.date())
.group_by(playlog.c.musicId)
.order_by(func.count(playlog.c.id).desc())
.limit(10)
)
result = await self.execute(sql)
if result:
return result.fetchall()
async def put_playlog(self, aime_id: int, playlog_data: Dict) -> Optional[int]:
playlog_data["user"] = aime_id