Commit d47314f1 authored by Anastasios Poimenidis's avatar Anastasios Poimenidis
Browse files

feat!: introduce flyway for database maintenance

parent 52663a67
Loading
Loading
Loading
Loading
Loading
+7 −0
Changes for pom.xml: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -75,6 +75,13 @@
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-hibernate-orm-panache</artifactId>
      </dependency>

      <!-- Quarkus Flyway Extension -->
      <dependency>
          <groupId>io.quarkus</groupId>
          <artifactId>quarkus-flyway</artifactId>
      </dependency>

      <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-jdbc-postgresql</artifactId>
+8 −10
Changes for src/main/resources/application.properties: 8 added lines, 10 removed lines.
Original line number Diff line number Diff line
@@ -426,9 +426,6 @@ quarkus.http.auth.permission.agreementPermit.methods=GET
%test.quarkus.log.handler.kafka.broker-list=localhost:9092
%test.quarkus.log.handler.kafka.topic=tmf-logging

#Default Datasource #Postgresql
%test.quarkus.hibernate-orm.database.generation=drop-and-create

#Logging
%test.quarkus.log.console.enable=true
%test.quarkus.log.console.level=DEBUG
@@ -448,13 +445,7 @@ quarkus.http.auth.permission.agreementPermit.methods=GET
%unittest.quarkus.log.handler.kafka.enabled=false
%unittest.quarkus.oidc.enabled=false

#Default Datasource #Postgresql
%unittest.quarkus.hibernate-orm.database.generation=drop-and-create

################## Prod Environment ##################

%prod.quarkus.hibernate-orm.database.generation=update

### The Kafka broker location
%prod.kafka.bootstrap.servers=tmf-services_kafka:9092

@@ -469,6 +460,14 @@ quarkus.datasource.db-kind=postgresql
%prod.quarkus.datasource.username=${_PROD_QUARKUS_DATASOURCE_USERNAME:username}
%prod.quarkus.datasource.password=${_PROD_QUARKUS_DATASOURCE_PASSWORD:password}

quarkus.flyway.migrate-at-start=true
quarkus.flyway.baseline-on-migrate=true
quarkus.flyway.baseline-version=1.0.0
quarkus.flyway.baseline-description=Initial state before Flyway
quarkus.hibernate-orm.database.generation=none

quarkus.hibernate-orm.mapping.format.global=ignore

####### Initialize data #######
%prod.initialize.data = true
%prod.initialize.data.file.path = /src/main/resources/startUp
@@ -523,4 +522,3 @@ quarkus.oidc.runtime-configuration-lifecycle=true
quarkus.smallrye-openapi.always-run-filter=true
%prod.quarkus.smallrye-openapi.auto-add-security=false
%prod.quarkus.smallrye-openapi.filter=org.etsi.osl.hypo.api.tmf.common.api.DynamicOidcOasFilter
 No newline at end of file
quarkus.hibernate-orm.mapping.format.global=ignore
 No newline at end of file
+7461 −0

File added.

Preview size limit exceeded, changes collapsed.

+28 −0
Changes for src/test/java/org/etsi/osl/hypo/api/tmf/database/FlywayValidationTest.java: 28 added lines, 0 removed lines.
Original line number Diff line number Diff line
package org.etsi.osl.hypo.api.tmf.database;

import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;

import io.quarkus.test.junit.QuarkusTest;
import jakarta.inject.Inject;
import org.flywaydb.core.Flyway;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;

@QuarkusTest
@Order(1)
class FlywayValidationTest {

    @Inject Flyway flyway;

    @Test
    @DisplayName("Verify applied Flyway migrations match schema history and checksums")
    void verifyFlywayValidationPasses() {
        // Validates applied migrations against current classpath migration files
        assertDoesNotThrow(
                () -> {
                    flyway.validate();
                },
                "Flyway schema history validation should pass without checksum failures");
    }
}