Liquibase POC
This commit is contained in:
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.net.OpcodeConstants;
|
||||
import constants.net.ServerConstants;
|
||||
import database.DatabaseMigrations;
|
||||
import database.note.NoteDao;
|
||||
import net.ChannelDependencies;
|
||||
import net.PacketProcessor;
|
||||
@@ -869,6 +870,8 @@ public class Server {
|
||||
throw new IllegalStateException("Failed to initiate a connection to the database");
|
||||
}
|
||||
|
||||
DatabaseMigrations.runDatabaseMigrations();
|
||||
|
||||
channelDependencies = registerChannelDependencies();
|
||||
|
||||
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