Fix some bugs

- Fix a bug that `GET` requests without data will report an error in API
- Fix a bug that `aggregate` requests will get an error when the inner function raises an error
- Fix a bug that the charts of a course cannot be the same because of the incorrect primary keys
- Fix a bug that global ranking scores cannot be calculated if there are no chart in the database #61
- The first try to fix #60 (I don't think it can be done so easily.)
This commit is contained in:
Lost-MSth
2022-07-20 21:59:26 +08:00
parent 47f05cdf1e
commit 93f4ad4999
7 changed files with 25 additions and 24 deletions

View File

@@ -619,24 +619,23 @@ class UserInfo(User):
with Connect() as c2:
c2.execute('''select song_id, rating_ftr, rating_byn from chart''')
x = c2.fetchall()
if x:
song_list_ftr = [self.user_id]
song_list_byn = [self.user_id]
for i in x:
if i[1] > 0:
song_list_ftr.append(i[0])
if i[2] > 0:
song_list_byn.append(i[0])
song_list_ftr = [self.user_id]
song_list_byn = [self.user_id]
for i in x:
if i[1] > 0:
song_list_ftr.append(i[0])
if i[2] > 0:
song_list_byn.append(i[0])
score_sum = 0
if len(song_list_ftr) >= 2:
self.c.execute('''select sum(score) from best_score where user_id=? and difficulty=2 and song_id in ({0})'''.format(
','.join(['?']*(len(song_list_ftr)-1))), tuple(song_list_ftr))
x = self.c.fetchone()
if x[0] is not None:
score_sum = x[0]
else:
score_sum = 0
score_sum += x[0]
if len(song_list_byn) >= 2:
self.c.execute('''select sum(score) from best_score where user_id=? and difficulty=3 and song_id in ({0})'''.format(
@@ -645,8 +644,6 @@ class UserInfo(User):
x = self.c.fetchone()
if x[0] is not None:
score_sum += x[0]
else:
score_sum += 0
self.c.execute('''update user set world_rank_score = :b where user_id = :a''', {
'a': self.user_id, 'b': score_sum})