Skip to content

Commit 520c84d

Browse files
Fixed Message Cache Primary Key Violation
1 parent b06cdc2 commit 520c84d

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

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

Lines changed: 5 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,11 +40,12 @@ 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+
public void insertList(@NotNull List<CachedMessage> messages) throws SQLException {
44+
List<CachedMessage> all = getAll();
4345
try (PreparedStatement stmt = con.prepareStatement("INSERT INTO message_cache (message_id, author_id, message_content) VALUES (?, ?, ?)",
4446
Statement.RETURN_GENERATED_KEYS
4547
)) {
46-
for (CachedMessage msg : messages) {
48+
for (CachedMessage msg : messages.stream().filter(s -> !all.contains(s)).toList()) {
4749
stmt.setLong(1, msg.getMessageId());
4850
stmt.setLong(2, msg.getAuthorId());
4951
stmt.setString(3, msg.getMessageContent());
@@ -59,7 +61,7 @@ public void insertList(List<CachedMessage> messages) throws SQLException {
5961
* @return Whether there were rows affected by this process.
6062
* @throws SQLException If an error occurs.
6163
*/
62-
public boolean update(CachedMessage message) throws SQLException {
64+
public boolean update(@NotNull CachedMessage message) throws SQLException {
6365
try (PreparedStatement stmt = con.prepareStatement("UPDATE message_cache SET message_content = ? WHERE message_id = ?",
6466
Statement.RETURN_GENERATED_KEYS
6567
)) {

0 commit comments

Comments
 (0)