From d1872f6e95b351ec4ab228627fc0259365b31423 Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Tue, 18 Jun 2024 09:53:44 +0200 Subject: [PATCH] Fix saving into sql --- .../essentia/storage/mysql/DatabaseQueue.java | 2 +- .../storage/mysql/SQLStorageProvider.java | 21 ++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/plugin/src/main/java/com/alttd/essentia/storage/mysql/DatabaseQueue.java b/plugin/src/main/java/com/alttd/essentia/storage/mysql/DatabaseQueue.java index 4c603d3..41cef6d 100644 --- a/plugin/src/main/java/com/alttd/essentia/storage/mysql/DatabaseQueue.java +++ b/plugin/src/main/java/com/alttd/essentia/storage/mysql/DatabaseQueue.java @@ -42,7 +42,7 @@ public class DatabaseQueue extends BukkitRunnable { if (databaseQuery == null) return; - databaseQuery.executeQuery(connection); + databaseQuery.execute(connection); } if (!connection.getAutoCommit()) { connection.commit(); diff --git a/plugin/src/main/java/com/alttd/essentia/storage/mysql/SQLStorageProvider.java b/plugin/src/main/java/com/alttd/essentia/storage/mysql/SQLStorageProvider.java index c2d2f07..ab031b6 100644 --- a/plugin/src/main/java/com/alttd/essentia/storage/mysql/SQLStorageProvider.java +++ b/plugin/src/main/java/com/alttd/essentia/storage/mysql/SQLStorageProvider.java @@ -37,8 +37,7 @@ public class SQLStorageProvider extends StorageProvider { "uuid VARCHAR(36) NOT NULL, " + "PRIMARY KEY (uuid)" + ")"; - DatabaseQuery databaseQuery = new DatabaseQuery(userTable); - databaseQuery.execute(getDatabaseConnection().get()); + addDatabaseQuery(new DatabaseQuery(userTable), false); } public DatabaseConnection getDatabaseConnection() { @@ -101,7 +100,7 @@ public class SQLStorageProvider extends StorageProvider { if (queue) { databaseQueue.databaseQueryQueue().offer(databaseQuery); } else { - databaseQuery.executeQuery(getDatabaseConnection().get()); + databaseQuery.execute(getDatabaseConnection().get()); } } @@ -142,9 +141,21 @@ public class SQLStorageProvider extends StorageProvider { @Override public void save(@NotNull User user) throws Exception { - String sql = "INSERT INTO users WHERE uuid = ?"; // upsert query + // might not be the best way if new fields are added... + // split into multiple tables - users, userdata, userhomes, ... ? + String sql = "INSERT INTO users" + + "(uuid)" + // columns + "VALUES (?)" + // data + "ON DUPLICATE KEY UPDATE " + // data + "uuid = ?"; addDatabaseQuery( - new DatabaseQuery(sql, ps -> ps.setString(1, user.getUUID().toString())), true + new DatabaseQuery(sql, new DatabaseQuery.DatabaseTask() { + @Override + public void edit(PreparedStatement ps) throws SQLException { + ps.setString(1, user.getUUID().toString()); + ps.setString(2, user.getUUID().toString()); + } + }), true ); }