Fix update logic

This commit is contained in:
2022-07-05 15:57:34 -05:00
parent 69fe72512c
commit 077dc25a5d
2 changed files with 21 additions and 5 deletions

View File

@@ -216,12 +216,16 @@ class WordleDb:
Score.select( Score.select(
Score, Score,
Hole.hole, Hole.hole,
Hole.hole_id,
Game.game_id,
User.username, User.username,
User.user_id,
Player.game_id, Player.game_id,
) )
.join(Player, on=(Score.user_id == Player.user_id)) .join(Player, on=(Score.user_id == Player.user_id))
.switch(Score) .switch(Score)
.join(Hole, on=(Score.hole_id == Hole.hole_id)) .join(Hole, on=(Score.hole_id == Hole.hole_id))
.join(Game, on=(Hole.game_id == Game.game_id))
.switch(Score) .switch(Score)
.join(User, on=(Score.user_id == User.user_id)) .join(User, on=(Score.user_id == User.user_id))
.filter(Player.game_id == round.game_id) .filter(Player.game_id == round.game_id)
@@ -235,9 +239,18 @@ class WordleDb:
Score.insert_many(batch).execute() Score.insert_many(batch).execute()
def bulk_update_scores(self, scores: typing.List[Score]): def bulk_update_scores(self, scores: typing.List[Score]):
with db.atomic(): query_str = """UPDATE score
for score in scores: SET score = {score}, tweet_id = {tweet_id}
score.save() WHERE user_id = {user_id} AND game_id = {game_id} AND hole_id = {hole_id}"""
for score in scores:
query = query_str.format(
score=score.score,
tweet_id=score.tweet_id or "NULL",
user_id=score.user_id.user_id,
game_id=score.game_id.game_id,
hole_id=score.hole_id.hole_id,
)
db.execute_sql(query)
def get_users_without_score(self, round_no, hole_no, tweetable=True): def get_users_without_score(self, round_no, hole_no, tweetable=True):
hole = self.get_or_create_hole(round_no, hole_no) hole = self.get_or_create_hole(round_no, hole_no)

View File

@@ -154,9 +154,12 @@ class UserRow(ScoreRow):
) )
else: else:
saved_score = score_match[0] saved_score = score_match[0]
if saved_score.score != score or saved_score.tweet_id != tweet_id: if saved_score.score != score or (
tweet_id and saved_score.tweet_id != tweet_id
):
saved_score.score = score saved_score.score = score
saved_score.tweet_id = tweet_id if tweet_id:
saved_score.tweet_id = tweet_id
results["update"].append(saved_score) results["update"].append(saved_score)
return results return results