From 47280900090b63bc98b681ff7d5165c1d721020b Mon Sep 17 00:00:00 2001
From: Lukas Malte Monnerjahn <lukasmalte.monnerjahn@dataport.de>
Date: Tue, 20 Feb 2024 16:57:29 +0100
Subject: [PATCH] OZG-5058 add mongock

---
 pom.xml                                              | 12 ++++++++++++
 .../de/ozgcloud/admin/AdministrationApplication.java |  2 ++
 src/main/resources/application.yaml                  |  8 ++++++++
 .../admin/AdministrationApplicationTest.java         |  3 ++-
 src/test/resources/application-itcase.yaml           |  2 ++
 5 files changed, 26 insertions(+), 1 deletion(-)
 create mode 100644 src/test/resources/application-itcase.yaml

diff --git a/pom.xml b/pom.xml
index e8dbfcfe..0dc310cc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,6 +21,7 @@
 		<spring-cloud-config-server.version>4.1.0</spring-cloud-config-server.version>
 		<testcontainers-keycloak.version>3.2.0</testcontainers-keycloak.version>
 		<keycloak-admin-client.version>23.0.6</keycloak-admin-client.version>
+		<mongock.version>5.4.0</mongock.version>
 	</properties>
 
 	<dependencies>
@@ -67,6 +68,17 @@
 		    <artifactId>spring-boot-configuration-processor</artifactId>
 		    <optional>true</optional>
 		</dependency>
+		<!-- mongock -->
+		<dependency>
+			<groupId>io.mongock</groupId>
+			<artifactId>mongock-springboot-v3</artifactId>
+			<version>${mongock.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>io.mongock</groupId>
+			<artifactId>mongodb-springdata-v4-driver</artifactId>
+			<version>${mongock.version}</version>
+		</dependency>
 
 		<!-- Dev -->
 		<dependency>
diff --git a/src/main/java/de/ozgcloud/admin/AdministrationApplication.java b/src/main/java/de/ozgcloud/admin/AdministrationApplication.java
index c9535837..563eea5b 100644
--- a/src/main/java/de/ozgcloud/admin/AdministrationApplication.java
+++ b/src/main/java/de/ozgcloud/admin/AdministrationApplication.java
@@ -21,6 +21,7 @@
  */
 package de.ozgcloud.admin;
 
+import io.mongock.runner.springboot.EnableMongock;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.config.server.EnableConfigServer;
@@ -28,6 +29,7 @@ import org.springframework.data.mongodb.repository.config.EnableMongoRepositorie
 
 @SpringBootApplication
 @EnableConfigServer
+@EnableMongock
 @EnableMongoRepositories
 public class AdministrationApplication {
 
diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml
index 29082f7d..68e8d507 100644
--- a/src/main/resources/application.yaml
+++ b/src/main/resources/application.yaml
@@ -49,6 +49,14 @@ management:
       exposure:
         include: health,prometheus
 
+mongock:
+  runner-type: initializingbean
+  migration-scan-package:
+    - de.ozgcloud.admin.migration
+  enabled: true
+  # try out if this works
+  transactionEnabled: true
+
 spring:
   application:
     name: OzgCloud_Administration
diff --git a/src/test/java/de/ozgcloud/admin/AdministrationApplicationTest.java b/src/test/java/de/ozgcloud/admin/AdministrationApplicationTest.java
index 7d88d423..c322c8fe 100644
--- a/src/test/java/de/ozgcloud/admin/AdministrationApplicationTest.java
+++ b/src/test/java/de/ozgcloud/admin/AdministrationApplicationTest.java
@@ -21,10 +21,11 @@
  */
 package de.ozgcloud.admin;
 
+import de.ozgcloud.common.test.ITCase;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 
-@SpringBootTest
+@ITCase
 class AdministrationApplicationTest {
 
 	@Test
diff --git a/src/test/resources/application-itcase.yaml b/src/test/resources/application-itcase.yaml
new file mode 100644
index 00000000..fc717c37
--- /dev/null
+++ b/src/test/resources/application-itcase.yaml
@@ -0,0 +1,2 @@
+mongock:
+  enabled: false
\ No newline at end of file
-- 
GitLab