diff --git a/loaders/mysql-loader/src/main/java/com/infernalsuite/asp/loaders/mysql/MysqlLoader.java b/loaders/mysql-loader/src/main/java/com/infernalsuite/asp/loaders/mysql/MysqlLoader.java index adf9383ba..546a42ceb 100644 --- a/loaders/mysql-loader/src/main/java/com/infernalsuite/asp/loaders/mysql/MysqlLoader.java +++ b/loaders/mysql-loader/src/main/java/com/infernalsuite/asp/loaders/mysql/MysqlLoader.java @@ -4,6 +4,7 @@ import com.infernalsuite.asp.api.loaders.UpdatableLoader; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; +import org.jetbrains.annotations.ApiStatus; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,18 +66,13 @@ public MysqlLoader(String sqlURL, String host, int port, String database, boolea hikariConfig.addDataSourceProperty("maintainTimeStats", "false"); source = new HikariDataSource(hikariConfig); + init(); + } - try (Connection con = source.getConnection()) { - // Create worlds table - try (PreparedStatement statement = con.prepareStatement(CREATE_WORLDS_TABLE_QUERY)) { - statement.execute(); - } - - // Create versioning table - try (PreparedStatement statement = con.prepareStatement(CREATE_VERSIONING_TABLE_QUERY)) { - statement.execute(); - } - } + @ApiStatus.Experimental + public MysqlLoader(HikariDataSource hikariDataSource) throws SQLException { + source = hikariDataSource; + init(); } @Override @@ -199,4 +195,18 @@ public void deleteWorld(String worldName) throws IOException, UnknownWorldExcept } } + private void init() throws SQLException { + try (Connection con = source.getConnection()) { + // Create worlds table + try (PreparedStatement statement = con.prepareStatement(CREATE_WORLDS_TABLE_QUERY)) { + statement.execute(); + } + + // Create versioning table + try (PreparedStatement statement = con.prepareStatement(CREATE_VERSIONING_TABLE_QUERY)) { + statement.execute(); + } + } + } + }