ongeki: bright MEMORY Act.3 support added

This commit is contained in:
Dniel97
2025-03-26 15:22:55 +01:00
parent 60002a466f
commit a2f71dc553
11 changed files with 91 additions and 34 deletions

View File

@@ -578,7 +578,11 @@ class OngekiItemData(BaseData):
return result.lastrowid
async def get_mission_points(self, version: int, aime_id: int) -> Optional[List[Dict]]:
sql = select(mission_point).where(and_(mission_point.c.user == aime_id, mission_point.c.version == version))
sql = select(mission_point).where(and_(
mission_point.c.user == aime_id,
mission_point.c.version <= version)
).order_by(mission_point.c.version.desc())
result = await self.execute(sql)
if result is None:
@@ -702,7 +706,11 @@ class OngekiItemData(BaseData):
return result.lastrowid
async def get_tech_event(self, version: int, aime_id: int) -> Optional[List[Dict]]:
sql = select(tech_event).where(and_(tech_event.c.user == aime_id, tech_event.c.version == version))
sql = select(tech_event).where(and_(
tech_event.c.user == aime_id,
tech_event.c.version <= version)
).order_by(tech_event.c.version.desc())
result = await self.execute(sql)
if result is None:
@@ -794,7 +802,7 @@ class OngekiItemData(BaseData):
async def get_ranking_event_ranks(self, version: int, aime_id: int) -> Optional[List[Dict]]:
# Calculates player rank on GameRequest from server, and sends it back, official spec would rank players in maintenance period, on TODO list
sql = select(event_point.c.id, event_point.c.user, event_point.c.eventId, event_point.c.type, func.row_number().over(partition_by=event_point.c.eventId, order_by=event_point.c.point.desc()).label('rank'), event_point.c.date, event_point.c.point).where(event_point.c.version == version)
sql = select(event_point.c.id, event_point.c.user, event_point.c.eventId, event_point.c.type, func.row_number().over(partition_by=event_point.c.eventId, order_by=event_point.c.point.desc()).label('rank'), event_point.c.date, event_point.c.point).where(event_point.c.version <= version).order_by(event_point.c.version.desc())
result = await self.execute(sql)
if result is None:
self.logger.error(f"failed to rank aime_id: {aime_id} ranking event positions")