Compare commits

..

2 Commits

Author SHA1 Message Date
c1f83eff55
feat(db): get_score_best 2023-09-23 17:51:50 +08:00
3349620b3a
impr(db): better recommend_charts 2023-09-23 17:51:32 +08:00

View File

@ -259,6 +259,14 @@ class Database(metaclass=Singleton):
result = session.scalar(stmt)
return result
def get_score_best(self, song_id: str, rating_class: int):
stmt = select(ScoreBest).where(
(ScoreBest.song_id == song_id) & (ScoreBest.rating_class == rating_class)
)
with self.sessionmaker() as session:
result = session.scalar(stmt)
return result
def insert_score(self, score: Score):
with self.sessionmaker() as session:
session.add(score)
@ -283,7 +291,7 @@ class Database(metaclass=Singleton):
session.delete(score)
session.commit()
def recommend_charts(self, play_result: float):
def recommend_charts(self, play_result: float, bounds: float = 0.1):
base_constant = math.ceil(play_result * 10)
results = []
@ -306,6 +314,8 @@ class Database(metaclass=Singleton):
(ScoreBest.song_id == chart.song_id)
& (ScoreBest.rating_class == chart.rating_class)
& (ScoreBest.score >= min_score)
& (play_result - bounds < ScoreBest.potential)
& (ScoreBest.potential < play_result + bounds)
)
if session.scalar(score_best_stmt):
chart_id = f"{chart.song_id},{chart.rating_class}"