forked from Dniel97/artemis
Fixed Rival Music retrieval
This commit is contained in:
parent
480551f942
commit
c78a62de14
@ -201,9 +201,33 @@ class ChuniScoreData(BaseData):
|
|||||||
return None
|
return None
|
||||||
return result.lastrowid
|
return result.lastrowid
|
||||||
|
|
||||||
def get_rival_music(self, rival_id: int, index: int, max_count: int) -> Optional[List[Dict]]:
|
def get_rival_music(self, rival_id: int) -> Optional[List[Dict]]:
|
||||||
sql = select(playlog).where(playlog.c.user == rival_id).limit(max_count).offset(index)
|
sql = select(playlog).where(playlog.c.user == rival_id)
|
||||||
result = self.execute(sql)
|
result = self.execute(sql)
|
||||||
if result is None:
|
if result is None:
|
||||||
return None
|
return None
|
||||||
return result.fetchall()
|
return result.fetchall()
|
||||||
|
def get_rival_music_highest_scores(self, rival_id: int) -> Optional[List[Dict]]:
|
||||||
|
# Define the subquery to retrieve the highest scoreMax for each level and musicId
|
||||||
|
subquery = (
|
||||||
|
select([
|
||||||
|
self.playlog.c.musicId,
|
||||||
|
self.playlog.c.level,
|
||||||
|
func.max(self.playlog.c.score)
|
||||||
|
])
|
||||||
|
.where(self.playlog.c.user == rival_id)
|
||||||
|
.group_by(self.playlog.c.musicId, self.playlog.c.level)
|
||||||
|
)
|
||||||
|
|
||||||
|
# Join the subquery with the playlog table to get the full records
|
||||||
|
query = select([
|
||||||
|
self.playlog,
|
||||||
|
subquery.scalar()
|
||||||
|
]).where(self.playlog.c.user == rival_id)
|
||||||
|
|
||||||
|
result = self.execute(query)
|
||||||
|
|
||||||
|
if result is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
return result.fetchall()
|
||||||
|
Loading…
Reference in New Issue
Block a user