diff --git a/backend/src/main/java/org/raddatz/familienarchiv/config/DataInitializer.java b/backend/src/main/java/org/raddatz/familienarchiv/config/DataInitializer.java index 262c4bf1..18571eb3 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/config/DataInitializer.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/config/DataInitializer.java @@ -4,6 +4,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.raddatz.familienarchiv.model.AppUser; +import org.springframework.context.annotation.DependsOn; import org.raddatz.familienarchiv.model.Document; import org.raddatz.familienarchiv.model.DocumentStatus; import org.raddatz.familienarchiv.model.Person; @@ -27,6 +28,7 @@ import java.util.Set; @Configuration @RequiredArgsConstructor @Slf4j +@DependsOn("flyway") public class DataInitializer { @Value("${app.admin.username:admin}") diff --git a/backend/src/main/java/org/raddatz/familienarchiv/config/FlywayConfig.java b/backend/src/main/java/org/raddatz/familienarchiv/config/FlywayConfig.java new file mode 100644 index 00000000..2f3ba6b4 --- /dev/null +++ b/backend/src/main/java/org/raddatz/familienarchiv/config/FlywayConfig.java @@ -0,0 +1,29 @@ +package org.raddatz.familienarchiv.config; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.flywaydb.core.Flyway; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.sql.DataSource; + +@Configuration +@RequiredArgsConstructor +@Slf4j +public class FlywayConfig { + + private final DataSource dataSource; + + @Bean(name = "flyway") + public Flyway flyway() { + log.info("Running Flyway migrations..."); + Flyway flyway = Flyway.configure() + .dataSource(dataSource) + .locations("classpath:db/migration") + .load(); + var result = flyway.migrate(); + log.info("Flyway: {} migration(s) applied.", result.migrationsExecuted); + return flyway; + } +} diff --git a/backend/src/main/resources/application.yaml b/backend/src/main/resources/application.yaml index 19f6daef..5839b767 100644 --- a/backend/src/main/resources/application.yaml +++ b/backend/src/main/resources/application.yaml @@ -9,11 +9,7 @@ spring: driver-class-name: org.postgresql.Driver flyway: - enabled: true - locations: classpath:db/migration - url: ${SPRING_DATASOURCE_URL} - user: ${SPRING_DATASOURCE_USERNAME} - password: ${SPRING_DATASOURCE_PASSWORD} + enabled: false # Managed explicitly via FlywayConfig bean jpa: hibernate: