diff options
| author | ilotterytea <iltsu@alright.party> | 2025-10-13 01:12:00 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-10-13 01:12:00 +0500 |
| commit | 6ddee564ca6184cd6840001a7719c5347516aca1 (patch) | |
| tree | ca9d511f13f37ae1f74dbe092879d9badc2ea206 | |
| parent | 9533a34322c5ec154860c42af98e0d4e8d44d945 (diff) | |
fix: panic on concurrent db write
| -rw-r--r-- | internal/handlers.go | 15 |
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) } } } |
