diff --git a/.env.dist b/.env.dist index 2f438a0..219477e 100644 --- a/.env.dist +++ b/.env.dist @@ -24,6 +24,8 @@ GONETTE_SMTP_PASSWORD= pass MAIL_RECIPIENT=test@example.com +DATABASE_RETENTION_PAYMENT_DAY=7 + # must be 'true' or 'false' PAYMENT_CYCLOS_ENABLED=true PAYMENT_AUTOMATIC_ENABLED=false \ No newline at end of file diff --git a/src/main/java/org/lagonette/hellos/service/PurgeDatabaseService.java b/src/main/java/org/lagonette/hellos/service/PurgeDatabaseService.java index 8ef942b..631505b 100644 --- a/src/main/java/org/lagonette/hellos/service/PurgeDatabaseService.java +++ b/src/main/java/org/lagonette/hellos/service/PurgeDatabaseService.java @@ -1,9 +1,9 @@ package org.lagonette.hellos.service; +import io.github.cdimascio.dotenv.Dotenv; import org.lagonette.hellos.repository.PaymentRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -16,12 +16,11 @@ public class PurgeDatabaseService { private final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); private final PaymentRepository paymentRepository; + private final Dotenv dotenv; - @Value("${database.retention.payment.days}") - private int nbOfDaysForPayments; - - public PurgeDatabaseService(PaymentRepository paymentRepository) { + public PurgeDatabaseService(PaymentRepository paymentRepository, Dotenv dotenv) { this.paymentRepository = paymentRepository; + this.dotenv = dotenv; } @Transactional @@ -29,6 +28,7 @@ public PurgeDatabaseService(PaymentRepository paymentRepository) { public void purgeDatabase() { LOGGER.info("Begin of the database purge"); + long nbOfDaysForPayments = Long.parseLong(dotenv.get("DATABASE_RETENTION_PAYMENT_DAY")); // Payment purge List paymentsToDelete = paymentRepository.findIdsByInsertionDateBefore(LocalDateTime.now().minusDays(nbOfDaysForPayments)); int paymentsSize = paymentsToDelete.size(); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 9ac975f..7744688 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,7 +1,6 @@ ################### # Database config # ################### -database.retention.payment.days=7 database.purge.cron=0 0 0 * * * # To use when application is behind a proxy responsible for HTTPS management server.use-forward-headers=true diff --git a/src/test/java/org/lagonette/hellos/service/PurgeDatabaseServiceTest.java b/src/test/java/org/lagonette/hellos/service/PurgeDatabaseServiceTest.java index 21a1394..243cc16 100644 --- a/src/test/java/org/lagonette/hellos/service/PurgeDatabaseServiceTest.java +++ b/src/test/java/org/lagonette/hellos/service/PurgeDatabaseServiceTest.java @@ -1,5 +1,7 @@ package org.lagonette.hellos.service; +import io.github.cdimascio.dotenv.Dotenv; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.lagonette.hellos.repository.PaymentRepository; @@ -19,9 +21,18 @@ class PurgeDatabaseServiceTest { @Mock private PaymentRepository paymentRepository; + @Mock + private Dotenv dotenv; + + @InjectMocks private PurgeDatabaseService purgeDatabaseService; + @BeforeEach + void before(){ + when(dotenv.get("DATABASE_RETENTION_PAYMENT_DAY")).thenReturn("7"); + } + @Test void purgeDatabase() { // GIVEN