From 7b08c0dc36d172e8380730ad1dceb6a7cd5505d6 Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Thu, 6 Mar 2025 18:04:18 +0700 Subject: [PATCH] feat: migrate to mariadb (finally) --- build-number.txt | 2 +- build.gradle | 2 +- .../chayapak1/chomens_bot/plugins/DatabasePlugin.java | 3 +-- .../chomens_bot/plugins/PlayersDatabasePlugin.java | 10 +++++----- src/main/resources/default-config.yml | 2 +- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/build-number.txt b/build-number.txt index 8d35ea81..3a2ac0e3 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -1699 \ No newline at end of file +1701 \ No newline at end of file diff --git a/build.gradle b/build.gradle index d12c71ac..1e4875d5 100644 --- a/build.gradle +++ b/build.gradle @@ -46,7 +46,7 @@ dependencies { implementation 'com.google.code.gson:gson:2.11.0' implementation 'com.google.guava:guava:31.1-jre' implementation 'com.fasterxml.jackson.core:jackson-databind:2.18.2' - implementation 'com.mysql:mysql-connector-j:9.1.0' + implementation 'org.mariadb.jdbc:mariadb-java-client:3.5.2' implementation 'org.jline:jline:3.23.0' implementation 'ch.qos.logback:logback-classic:1.5.11' implementation 'com.github.pircbotx:pircbotx:2.3.1' diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/DatabasePlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/DatabasePlugin.java index b488af3c..6d4ecac9 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/DatabasePlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/DatabasePlugin.java @@ -11,7 +11,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class DatabasePlugin { - // is it OK to have a completely separate ExecutorService to do the executions? public static final ExecutorService executorService = Executors.newFixedThreadPool( 1, new ThreadFactoryBuilder().setNameFormat("ExecutorService (database)").build() @@ -22,7 +21,7 @@ public class DatabasePlugin { public DatabasePlugin (Configuration config) { try { connection = DriverManager.getConnection( - "jdbc:mysql://" + config.database.address + "/chomens_bot", + "jdbc:mariadb://" + config.database.address + "/chomens_bot", config.database.username, config.database.password ); diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersDatabasePlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersDatabasePlugin.java index b392357a..3a38f5c9 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersDatabasePlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersDatabasePlugin.java @@ -19,13 +19,13 @@ import java.util.Map; import java.util.concurrent.CompletableFuture; public class PlayersDatabasePlugin extends PlayersPlugin.Listener { - private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS players (username VARCHAR(255) PRIMARY KEY, data JSON);"; + private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS players (username VARCHAR(255) PRIMARY KEY, data LONGTEXT);"; private static final String INSERT_PLAYER = "INSERT IGNORE INTO players (username, data) VALUES (?, ?);"; - private static final String UPDATE_PLAYER = "UPDATE players SET data = JSON_SET(data, ?, JSON_MERGE_PATCH(data -> ?, ?)) WHERE username = ?;"; + private static final String UPDATE_PLAYER = "UPDATE players SET data = JSON_SET(data, ?, JSON_MERGE_PATCH(JSON_EXTRACT(data, ?), ?)) WHERE username = ?;"; private static final String GET_DATA = "SELECT data FROM players WHERE username = ?;"; - private static final String GET_IP = "SELECT JSON_UNQUOTE(JSON_EXTRACT(data, ?)) AS ip FROM players WHERE username = ?;"; - private static final String FIND_ALTS_SINGLE_SERVER = "SELECT * FROM players WHERE JSON_CONTAINS(data -> '$.ips', JSON_OBJECT(?, ?));"; - private static final String FIND_ALTS_ALL_SERVERS = "SELECT * FROM players WHERE JSON_SEARCH(data->'$.ips', 'one', ?);"; // 'one' means case-sensitive + private static final String GET_IP = "SELECT JSON_UNQUOTE(JSON_VALUE(data, ?)) AS ip FROM players WHERE username = ?;"; + private static final String FIND_ALTS_SINGLE_SERVER = "SELECT * FROM players WHERE JSON_CONTAINS(JSON_EXTRACT(data, '$.ips'), JSON_OBJECT(?, ?));"; + private static final String FIND_ALTS_ALL_SERVERS = "SELECT * FROM players WHERE JSON_SEARCH(JSON_EXTRACT(data, '$.ips'), 'one', ?) IS NOT NULL;"; private static final ObjectMapper objectMapper = new ObjectMapper(); diff --git a/src/main/resources/default-config.yml b/src/main/resources/default-config.yml index 763072b0..a0990095 100644 --- a/src/main/resources/default-config.yml +++ b/src/main/resources/default-config.yml @@ -25,7 +25,7 @@ backup: database: enabled: false - address: 'localhost' # jdbc:mysql://
/chomens_bot + address: 'localhost' # jdbc:mariadb://
/chomens_bot username: 'chomens_bot' password: '123456'