Fix update logic
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user