summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-10-13 01:12:00 +0500
committerilotterytea <iltsu@alright.party>2025-10-13 01:12:00 +0500
commit6ddee564ca6184cd6840001a7719c5347516aca1 (patch)
treeca9d511f13f37ae1f74dbe092879d9badc2ea206
parent9533a34322c5ec154860c42af98e0d4e8d44d945 (diff)
fix: panic on concurrent db write
-rw-r--r--internal/handlers.go15
1 files changed, 11 insertions, 4 deletions
diff --git a/internal/handlers.go b/internal/handlers.go
index 9c0ade4..657b370 100644
--- a/internal/handlers.go
+++ b/internal/handlers.go
@@ -100,11 +100,18 @@ func HandleMessageEvent(channel string, user twitch.User, message twitch.Message
log.Panicf("Error getting channel word: %v\n", err)
}
- usageCount++
- _, err = db.Exec("UPDATE channel_words SET last_used_at = UTC_TIMESTAMP, usage_count = ? WHERE id = ?", usageCount, cwordId)
-
+ _, err := db.Exec(
+ `INSERT INTO channel_words(word_id, user_id, channel_id)
+ VALUES (?, ?, ?)
+ ON DUPLICATE KEY UPDATE
+ usage_count = usage_count + 1,
+ last_used_at = UTC_TIMESTAMP()`,
+ wordId,
+ userId,
+ channelId,
+ )
if err != nil {
- log.Panicf("Failed to update channel word: %v\n", err)
+ log.Panicf("Error creating a new channel word: %vn", err)
}
}
}