Skip to content

Commit 9d2bf1c

Browse files
Merge pull request #334 from Java-Discord/dynxsty/fix-message-cache
Fixed Message Cache Primary Key Violation
2 parents b681116 + cc10a18 commit 9d2bf1c

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/main/java/net/javadiscord/javabot/data/h2db/message_cache/dao/MessageCacheRepository.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import lombok.RequiredArgsConstructor;
44
import net.javadiscord.javabot.data.h2db.message_cache.model.CachedMessage;
5+
import org.jetbrains.annotations.NotNull;
56

67
import java.sql.*;
78
import java.util.ArrayList;
@@ -39,16 +40,18 @@ public boolean insert(CachedMessage message) throws SQLException {
3940
* @param messages The List to insert.
4041
* @throws SQLException If an error occurs.
4142
*/
42-
public void insertList(List<CachedMessage> messages) throws SQLException {
43-
try (PreparedStatement stmt = con.prepareStatement("INSERT INTO message_cache (message_id, author_id, message_content) VALUES (?, ?, ?)",
43+
public void insertList(@NotNull List<CachedMessage> messages) throws SQLException {
44+
try (PreparedStatement stmt = con.prepareStatement("MERGE INTO message_cache (message_id, author_id, message_content) VALUES (?, ?, ?)",
4445
Statement.RETURN_GENERATED_KEYS
4546
)) {
47+
con.setAutoCommit(false);
4648
for (CachedMessage msg : messages) {
4749
stmt.setLong(1, msg.getMessageId());
4850
stmt.setLong(2, msg.getAuthorId());
4951
stmt.setString(3, msg.getMessageContent());
5052
stmt.executeUpdate();
5153
}
54+
con.commit();
5255
}
5356
}
5457

@@ -59,7 +62,7 @@ public void insertList(List<CachedMessage> messages) throws SQLException {
5962
* @return Whether there were rows affected by this process.
6063
* @throws SQLException If an error occurs.
6164
*/
62-
public boolean update(CachedMessage message) throws SQLException {
65+
public boolean update(@NotNull CachedMessage message) throws SQLException {
6366
try (PreparedStatement stmt = con.prepareStatement("UPDATE message_cache SET message_content = ? WHERE message_id = ?",
6467
Statement.RETURN_GENERATED_KEYS
6568
)) {

0 commit comments

Comments
 (0)