From 2d2e3157931c7dfc0ba62386e3cd1b594ac07531 Mon Sep 17 00:00:00 2001 From: aro Date: Mon, 23 Jan 2023 15:04:43 +0100 Subject: [PATCH] refactor: logic --- .../nicko/storage/sql/SQLStorage.java | 22 +++++++++++---- .../nicko/storage/sql/SQLStorageProvider.java | 28 +++++++++---------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/storage/sql/SQLStorage.java b/nicko-core/src/main/java/net/artelnatif/nicko/storage/sql/SQLStorage.java index 4378cdb..90a2e12 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/storage/sql/SQLStorage.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/storage/sql/SQLStorage.java @@ -6,8 +6,7 @@ import net.artelnatif.nicko.disguise.NickoProfile; import net.artelnatif.nicko.i18n.I18NDict; import net.artelnatif.nicko.storage.Storage; -import java.sql.Connection; -import java.sql.SQLException; +import java.sql.*; import java.util.Optional; import java.util.UUID; @@ -27,13 +26,24 @@ public class SQLStorage extends Storage { public ActionResult store(UUID uuid, NickoProfile profile) { final Connection connection = getProvider().getConnection(); try { - connection.prepareStatement(""); + final String sql = """ + INSERT INTO nicko.DATA + (uuid, name, skin, bungeecord) + VALUES + (?, ?, ?, ?) + ON DUPLICATE KEY UPDATE uuid = %s + """.formatted(uuid.toString()); + + final PreparedStatement statement = connection.prepareStatement(sql); + statement.setObject(0, uuid); + statement.setString(1, profile.getName()); + statement.setString(2, profile.getSkin()); + statement.setBoolean(3, profile.isBungeecordTransfer()); + return new ActionResult<>(); } catch (SQLException e) { instance.getLogger().warning("Unable to store player."); - return new ActionResult<>(I18NDict.Error.UNEXPECTED_ERROR); + return new ActionResult<>(I18NDict.Error.SQL_ERROR); } - - return new ActionResult<>(); } @Override diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/storage/sql/SQLStorageProvider.java b/nicko-core/src/main/java/net/artelnatif/nicko/storage/sql/SQLStorageProvider.java index 46c059e..da7beda 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/storage/sql/SQLStorageProvider.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/storage/sql/SQLStorageProvider.java @@ -28,24 +28,19 @@ public class SQLStorageProvider implements StorageProvider { config.getSQLPassword()); final boolean initialized = connection != null && !connection.isClosed(); - if (initialized) { - instance.getLogger().info("Creating SQL database..."); - createDatabase(); + if (!initialized) return false; - instance.getLogger().info("Creating SQL table..."); - createTable(); - return true; - } - return false; + instance.getLogger().info("Creating SQL database..."); + createDatabase(); + + instance.getLogger().info("Creating SQL table..."); + createTable(); + return true; } catch (SQLException e) { return false; } } - public Connection getConnection() { - return connection; - } - @Override public boolean close() { if (connection == null) { return true; } @@ -59,17 +54,16 @@ public class SQLStorageProvider implements StorageProvider { private void createTable() { final Connection connection = getConnection(); - final String tableName = "DATA"; final String query = """ - CREATE TABLE IF NOT EXISTS %s.%s ( + CREATE TABLE IF NOT EXISTS %s.DATA ( uuid uuid NOT NULL, name varchar(16) NOT NULL, skin varchar(16) NOT NULL, bungeecord boolean NOT NULL, PRIMARY KEY (UUID) ) - """.formatted(schemaName, tableName); + """.formatted(schemaName); try { final PreparedStatement statement = connection.prepareStatement(query); @@ -97,4 +91,8 @@ public class SQLStorageProvider implements StorageProvider { throw new RuntimeException(e); } } + + public Connection getConnection() { + return connection; + } }