diff --git a/ripple/userUtils.py b/ripple/userUtils.py index 79ae90a..12ceae2 100644 --- a/ripple/userUtils.py +++ b/ripple/userUtils.py @@ -70,10 +70,10 @@ def getUserStatsRx(userID, gameMode): # Get stats stats = glob.db.fetch("""SELECT - ranked_score_{gm} AS rankedScore, - avg_accuracy_{gm} AS accuracy, - playcount_{gm} AS playcount, - total_score_{gm} AS totalScore, + ranked_score_{gm}_rx AS rankedScore, + avg_accuracy_{gm}_rx AS accuracy, + playcount_{gm}_rx AS playcount, + total_score_{gm}_rx AS totalScore, pp_{gm}_rx AS pp FROM users_stats WHERE id = %s LIMIT 1""".format(gm=modeForDB), [userID]) @@ -95,10 +95,10 @@ def getUserStatsAp(userID, gameMode): # Get stats stats = glob.db.fetch("""SELECT - ranked_score_{gm} AS rankedScore, - avg_accuracy_{gm} AS accuracy, - playcount_{gm} AS playcount, - total_score_{gm} AS totalScore, + ranked_score_{gm}_ap AS rankedScore, + avg_accuracy_{gm}_ap AS accuracy, + playcount_{gm}_ap AS playcount, + total_score_{gm}_ap AS totalScore, pp_{gm}_auto AS pp FROM users_stats WHERE id = %s LIMIT 1""".format(gm=modeForDB), [userID]) @@ -281,6 +281,60 @@ def updateLevel(userID, gameMode=0, totalScore=0): # Save new level glob.db.execute("UPDATE users_stats SET level_{m} = %s WHERE id = %s LIMIT 1".format(m=mode), [level, userID]) +def updateLevelRX(userID, gameMode=0, totalScore=0): + """ + Update level in DB for userID relative to gameMode + + :param userID: user id + :param gameMode: game mode number + :param totalScore: new total score + :return: + """ + # Make sure the user exists + # if not exists(userID): + # return + + # Get total score from db if not passed + mode = scoreUtils.readableGameMode(gameMode) + if totalScore == 0: + totalScore = glob.db.fetch( + "SELECT total_score_{m}_rx as total_score FROM users_stats WHERE id = %s LIMIT 1".format(m=mode), [userID]) + if totalScore: + totalScore = totalScore["total_score"] + + # Calculate level from totalScore + level = getLevel(totalScore) + + # Save new level + glob.db.execute("UPDATE users_stats SET level_{m}_rx = %s WHERE id = %s LIMIT 1".format(m=mode), [level, userID]) + +def updateLevelAP(userID, gameMode=0, totalScore=0): + """ + Update level in DB for userID relative to gameMode + + :param userID: user id + :param gameMode: game mode number + :param totalScore: new total score + :return: + """ + # Make sure the user exists + # if not exists(userID): + # return + + # Get total score from db if not passed + mode = scoreUtils.readableGameMode(gameMode) + if totalScore == 0: + totalScore = glob.db.fetch( + "SELECT total_score_{m}_ap as total_score FROM users_stats WHERE id = %s LIMIT 1".format(m=mode), [userID]) + if totalScore: + totalScore = totalScore["total_score"] + + # Calculate level from totalScore + level = getLevel(totalScore) + + # Save new level + glob.db.execute("UPDATE users_stats SET level_{m}_ap = %s WHERE id = %s LIMIT 1".format(m=mode), [level, userID]) + def calculateAccuracy(userID, gameMode): """ Calculate accuracy value for userID relative to gameMode @@ -402,6 +456,32 @@ def updateAccuracy(userID, gameMode): glob.db.execute("UPDATE users_stats SET avg_accuracy_{m} = %s WHERE id = %s LIMIT 1".format(m=mode), [newAcc, userID]) +def updateAccuracyRX(userID, gameMode): + """ + Update accuracy value for userID relative to gameMode in DB + + :param userID: user id + :param gameMode: gameMode number + :return: + """ + newAcc = calculateAccuracy(userID, gameMode) + mode = scoreUtils.readableGameMode(gameMode) + glob.db.execute("UPDATE users_stats SET avg_accuracy_{m}_rx = %s WHERE id = %s LIMIT 1".format(m=mode), + [newAcc, userID]) + +def updateAccuracyAP(userID, gameMode): + """ + Update accuracy value for userID relative to gameMode in DB + + :param userID: user id + :param gameMode: gameMode number + :return: + """ + newAcc = calculateAccuracy(userID, gameMode) + mode = scoreUtils.readableGameMode(gameMode) + glob.db.execute("UPDATE users_stats SET avg_accuracy_{m}_ap = %s WHERE id = %s LIMIT 1".format(m=mode), + [newAcc, userID]) + def updatePP(userID, gameMode): """ Update userID's pp with new value @@ -508,21 +588,21 @@ def updateStatsRx(userID, __score): # Update total score and playcount glob.db.execute( - "UPDATE users_stats SET total_score_{m}=total_score_{m}+%s, playcount_{m}=playcount_{m}+1 WHERE id = %s LIMIT 1".format( + "UPDATE users_stats SET total_score_{m}_rx=total_score_{m}_rx+%s, playcount_{m}_rx=playcount_{m}_rx+1 WHERE id = %s LIMIT 1".format( m=mode), [__score.score, userID]) # Calculate new level and update it - updateLevel(userID, __score.gameMode) + updateLevelRX(userID, __score.gameMode) # Update level, accuracy and ranked score only if we have passed the song if __score.passed: # Update ranked score glob.db.execute( - "UPDATE users_stats SET ranked_score_{m}=ranked_score_{m}+%s WHERE id = %s LIMIT 1".format(m=mode), + "UPDATE users_stats SET ranked_score_{m}_rx=ranked_score_{m}_rx+%s WHERE id = %s LIMIT 1".format(m=mode), [__score.rankedScoreIncrease, userID]) # Update accuracy - updateAccuracy(userID, __score.gameMode) + updateAccuracyRX(userID, __score.gameMode) # Update pp updatePPRelax(userID, __score.gameMode) @@ -546,11 +626,11 @@ def updateStatsAp(userID, __score): # Update total score and playcount glob.db.execute( - "UPDATE users_stats SET total_score_{m}=total_score_{m}+%s, playcount_{m}=playcount_{m}+1 WHERE id = %s LIMIT 1".format( + "UPDATE users_stats SET total_score_{m}_ap=total_score_{m}_a-+%s, playcount_{m}_ap=playcount_{m}_ap+1 WHERE id = %s LIMIT 1".format( m=mode), [__score.score, userID]) # Calculate new level and update it - updateLevel(userID, __score.gameMode) + updateLevelAP(userID, __score.gameMode) # Update level, accuracy and ranked score only if we have passed the song if __score.passed: @@ -560,7 +640,7 @@ def updateStatsAp(userID, __score): [__score.rankedScoreIncrease, userID]) # Update accuracy - updateAccuracy(userID, __score.gameMode) + updateAccuracyAP(userID, __score.gameMode) # Update pp updatePPAuto(userID, __score.gameMode)