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,
Hole.hole,
Hole.hole_id,
Game.game_id,
User.username,
User.user_id,
Player.game_id,
)
.join(Player, on=(Score.user_id == Player.user_id))
.switch(Score)
.join(Hole, on=(Score.hole_id == Hole.hole_id))
.join(Game, on=(Hole.game_id == Game.game_id))
.switch(Score)
.join(User, on=(Score.user_id == User.user_id))
.filter(Player.game_id == round.game_id)
@@ -235,9 +239,18 @@ class WordleDb:
Score.insert_many(batch).execute()
def bulk_update_scores(self, scores: typing.List[Score]):
with db.atomic():
for score in scores:
score.save()
query_str = """UPDATE score
SET score = {score}, tweet_id = {tweet_id}
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):
hole = self.get_or_create_hole(round_no, hole_no)

View File

@@ -154,9 +154,12 @@ class UserRow(ScoreRow):
)
else:
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.tweet_id = tweet_id
if tweet_id:
saved_score.tweet_id = tweet_id
results["update"].append(saved_score)
return results