From 842ec0e28dd3763eaef0ae188f6f8f9d6171229f Mon Sep 17 00:00:00 2001 From: Coded Date: Sat, 28 Sep 2024 14:32:53 +0100 Subject: [PATCH] feat: add create_tables config option to disable automatic DDL operations (#377) * Add config option for creating tables * Move createTables config to a better position --- .../main/java/net/william278/husksync/config/Settings.java | 3 +++ .../net/william278/husksync/database/MongoDbDatabase.java | 4 ++++ .../java/net/william278/husksync/database/MySqlDatabase.java | 3 +++ .../net/william278/husksync/database/PostgresDatabase.java | 3 +++ 4 files changed, 13 insertions(+) diff --git a/common/src/main/java/net/william278/husksync/config/Settings.java b/common/src/main/java/net/william278/husksync/config/Settings.java index abff03a3..ad414149 100644 --- a/common/src/main/java/net/william278/husksync/config/Settings.java +++ b/common/src/main/java/net/william278/husksync/config/Settings.java @@ -141,6 +141,9 @@ public class Settings { @Getter(AccessLevel.NONE) private Map tableNames = Database.TableName.getDefaults(); + @Comment("Whether to run the creation SQL on the database when the server starts. Don't modify this unless you know what you're doing!") + private boolean createTables = true; + @NotNull public String getTableName(@NotNull Database.TableName tableName) { return tableNames.getOrDefault(tableName.name().toLowerCase(Locale.ENGLISH), tableName.getDefaultName()); diff --git a/common/src/main/java/net/william278/husksync/database/MongoDbDatabase.java b/common/src/main/java/net/william278/husksync/database/MongoDbDatabase.java index 1208d493..0f4c248b 100644 --- a/common/src/main/java/net/william278/husksync/database/MongoDbDatabase.java +++ b/common/src/main/java/net/william278/husksync/database/MongoDbDatabase.java @@ -64,6 +64,10 @@ public class MongoDbDatabase extends Database { ConnectionString URI = createConnectionURI(credentials); mongoConnectionHandler = new MongoConnectionHandler(URI, credentials.getDatabase()); mongoCollectionHelper = new MongoCollectionHelper(mongoConnectionHandler); + + // Check config for if tables should be created + if (!plugin.getSettings().getDatabase().isCreateTables()) return; + if (mongoCollectionHelper.getCollection(usersTable) == null) { mongoCollectionHelper.createCollection(usersTable); } diff --git a/common/src/main/java/net/william278/husksync/database/MySqlDatabase.java b/common/src/main/java/net/william278/husksync/database/MySqlDatabase.java index 249e3989..3637b0b0 100644 --- a/common/src/main/java/net/william278/husksync/database/MySqlDatabase.java +++ b/common/src/main/java/net/william278/husksync/database/MySqlDatabase.java @@ -115,6 +115,9 @@ public class MySqlDatabase extends Database { ); dataSource.setDataSourceProperties(properties); + // Check config for if tables should be created + if (!plugin.getSettings().getDatabase().isCreateTables()) return; + // Prepare database schema; make tables if they don't exist try (Connection connection = dataSource.getConnection()) { final String[] databaseSchema = getSchemaStatements(String.format("database/%s_schema.sql", flavor)); diff --git a/common/src/main/java/net/william278/husksync/database/PostgresDatabase.java b/common/src/main/java/net/william278/husksync/database/PostgresDatabase.java index d9522a56..3293d138 100644 --- a/common/src/main/java/net/william278/husksync/database/PostgresDatabase.java +++ b/common/src/main/java/net/william278/husksync/database/PostgresDatabase.java @@ -108,6 +108,9 @@ public class PostgresDatabase extends Database { ); dataSource.setDataSourceProperties(properties); + // Check config for if tables should be created + if (!plugin.getSettings().getDatabase().isCreateTables()) return; + // Prepare database schema; make tables if they don't exist try (Connection connection = dataSource.getConnection()) { final String[] databaseSchema = getSchemaStatements(String.format("database/%s_schema.sql", flavor));