From f00bff5f64f58e97622a45c4b6f5f9cda350ae36 Mon Sep 17 00:00:00 2001 From: Esa Kataja Date: Tue, 13 May 2025 20:11:38 +0300 Subject: [PATCH] Fix review put failing when no previous review exist --- src/routes/reviews.py | 44 +++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/src/routes/reviews.py b/src/routes/reviews.py index 8a49908..5194a53 100644 --- a/src/routes/reviews.py +++ b/src/routes/reviews.py @@ -93,18 +93,38 @@ async def update_review(review: ReviewIn): f"AND user_id = {review.user_id}" ) - # Update the review - conn.execute( - "UPDATE Review SET score_song = ?, score_show = ?, score_costume = ?, text_review = ? WHERE song_id = ? AND user_id = ?", - ( - review.score_song, - review.score_show, - review.score_costume, - review.text_review, - review.song_id, - review.user_id, - ), - ) + # Check if the review exists + review_df = conn.execute( + "SELECT * FROM Review WHERE song_id = ? AND user_id = ?", + (review.song_id, review.user_id), + ).fetchdf() + + if not review_df.empty: + # Update the review + conn.execute( + "UPDATE Review SET score_song = ?, score_show = ?, score_costume = ?, text_review = ? WHERE song_id = ? AND user_id = ?", + ( + review.score_song, + review.score_show, + review.score_costume, + review.text_review, + review.song_id, + review.user_id, + ), + ) + else: + # Insert the review + conn.execute( + "INSERT INTO Review (user_id, song_id, score_song, score_show, score_costume, text_review) VALUES (?, ?, ?, ?, ?, ?)", + ( + review.user_id, + review.song_id, + review.score_song, + review.score_show, + review.score_costume, + review.text_review, + ), + ) # Fetch the updated review logger.debug(