Liquibase POC
This commit is contained in:
7
pom.xml
7
pom.xml
@@ -66,6 +66,7 @@
|
|||||||
<HikariCP.version>6.3.0</HikariCP.version> <!-- Database connection pool -->
|
<HikariCP.version>6.3.0</HikariCP.version> <!-- Database connection pool -->
|
||||||
<mysql-connector-j.version>9.3.0</mysql-connector-j.version> <!-- MySQL JDBC driver -->
|
<mysql-connector-j.version>9.3.0</mysql-connector-j.version> <!-- MySQL JDBC driver -->
|
||||||
<jdbi-version>3.49.5</jdbi-version> <!-- Convenience wrapper around JDBC -->
|
<jdbi-version>3.49.5</jdbi-version> <!-- Convenience wrapper around JDBC -->
|
||||||
|
<liquibase-core.version>4.32.0</liquibase-core.version> <!-- Database migrations -->
|
||||||
<junit.version>5.13.1</junit.version> <!-- Unit test -->
|
<junit.version>5.13.1</junit.version> <!-- Unit test -->
|
||||||
<mockito.version>5.18.0</mockito.version> <!-- Unit test -->
|
<mockito.version>5.18.0</mockito.version> <!-- Unit test -->
|
||||||
</properties>
|
</properties>
|
||||||
@@ -98,7 +99,11 @@
|
|||||||
<artifactId>jdbi3-core</artifactId>
|
<artifactId>jdbi3-core</artifactId>
|
||||||
<version>${jdbi-version}</version>
|
<version>${jdbi-version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.liquibase</groupId>
|
||||||
|
<artifactId>liquibase-core</artifactId>
|
||||||
|
<version>${liquibase-core.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- Networking -->
|
<!-- Networking -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|||||||
35
src/main/java/database/DatabaseMigrations.java
Normal file
35
src/main/java/database/DatabaseMigrations.java
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
package database;
|
||||||
|
|
||||||
|
import liquibase.Liquibase;
|
||||||
|
import liquibase.UpdateSummaryOutputEnum;
|
||||||
|
import liquibase.database.jvm.JdbcConnection;
|
||||||
|
import liquibase.exception.LiquibaseException;
|
||||||
|
import liquibase.resource.ClassLoaderResourceAccessor;
|
||||||
|
import tools.DatabaseConnection;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class DatabaseMigrations {
|
||||||
|
|
||||||
|
public static void runDatabaseMigrations() {
|
||||||
|
suppressLiquibaseLogs();
|
||||||
|
runLiquibaseUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void suppressLiquibaseLogs() {
|
||||||
|
java.util.logging.Logger liquibaseLogger = java.util.logging.Logger.getLogger("liquibase");
|
||||||
|
liquibaseLogger.setLevel(java.util.logging.Level.WARNING);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void runLiquibaseUpdate() {
|
||||||
|
try (Connection connection = DatabaseConnection.getConnection()) {
|
||||||
|
liquibase.database.DatabaseConnection databaseConnection = new JdbcConnection(connection);
|
||||||
|
Liquibase liquibase = new Liquibase("db/changelog.xml", new ClassLoaderResourceAccessor(), databaseConnection);
|
||||||
|
liquibase.setShowSummaryOutput(UpdateSummaryOutputEnum.LOG);
|
||||||
|
liquibase.update();
|
||||||
|
} catch (SQLException | LiquibaseException e) {
|
||||||
|
throw new RuntimeException("Failed to run database migrations", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -36,6 +36,7 @@ import constants.game.GameConstants;
|
|||||||
import constants.inventory.ItemConstants;
|
import constants.inventory.ItemConstants;
|
||||||
import constants.net.OpcodeConstants;
|
import constants.net.OpcodeConstants;
|
||||||
import constants.net.ServerConstants;
|
import constants.net.ServerConstants;
|
||||||
|
import database.DatabaseMigrations;
|
||||||
import database.note.NoteDao;
|
import database.note.NoteDao;
|
||||||
import net.ChannelDependencies;
|
import net.ChannelDependencies;
|
||||||
import net.PacketProcessor;
|
import net.PacketProcessor;
|
||||||
@@ -869,6 +870,8 @@ public class Server {
|
|||||||
throw new IllegalStateException("Failed to initiate a connection to the database");
|
throw new IllegalStateException("Failed to initiate a connection to the database");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DatabaseMigrations.runDatabaseMigrations();
|
||||||
|
|
||||||
channelDependencies = registerChannelDependencies();
|
channelDependencies = registerChannelDependencies();
|
||||||
|
|
||||||
final ExecutorService initExecutor = Executors.newFixedThreadPool(10);
|
final ExecutorService initExecutor = Executors.newFixedThreadPool(10);
|
||||||
|
|||||||
13
src/main/resources/db/changelog.xml
Normal file
13
src/main/resources/db/changelog.xml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<databaseChangeLog
|
||||||
|
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="
|
||||||
|
http://www.liquibase.org/xml/ns/dbchangelog
|
||||||
|
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.3.xsd">
|
||||||
|
|
||||||
|
<changeSet id="1" author="Ponk">
|
||||||
|
<sqlFile path="db/test-liquibase.sql"/>
|
||||||
|
</changeSet>
|
||||||
|
|
||||||
|
</databaseChangeLog>
|
||||||
4
src/main/resources/db/test-liquibase.sql
Normal file
4
src/main/resources/db/test-liquibase.sql
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
CREATE TABLE test_liquibase
|
||||||
|
(
|
||||||
|
id INT NOT NULL
|
||||||
|
);
|
||||||
Reference in New Issue
Block a user