From f94ad35bc04b34d2265b4faca69b10e54f9a111c Mon Sep 17 00:00:00 2001 From: widlam Date: Mon, 15 May 2023 11:10:44 +0200 Subject: [PATCH] Changed retention --- .../java/com/r11/tools/KlausApplication.java | 1 - .../configuration/RetentionConfiguration.java | 54 +++++++++++++------ .../RetentionConfigurationProperties.java | 2 +- .../r11/tools/controller/MockController.java | 1 + .../tools/controller/MvcExceptionHandler.java | 2 + .../controller/RequestHistoryController.java | 1 + .../tools/mappers/MockedMessageMapper.java | 1 + .../com/r11/tools/model/MockedMessage.java | 2 + .../src/main/resources/application.properties | 6 +-- 9 files changed, 50 insertions(+), 20 deletions(-) diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/KlausApplication.java b/Backend/mocked-services/src/main/java/com/r11/tools/KlausApplication.java index efb3637..916928a 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/KlausApplication.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/KlausApplication.java @@ -11,7 +11,6 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties * @author Rafał Żukowicz */ @SpringBootApplication -@EnableConfigurationProperties(RetentionConfigurationProperties.class) public class KlausApplication { public static void main(String[] args) { diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/configuration/RetentionConfiguration.java b/Backend/mocked-services/src/main/java/com/r11/tools/configuration/RetentionConfiguration.java index ffe32ce..ba0309d 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/configuration/RetentionConfiguration.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/configuration/RetentionConfiguration.java @@ -1,34 +1,58 @@ package com.r11.tools.configuration; -import ch.qos.logback.core.util.FixedDelay; -import lombok.AllArgsConstructor; +import com.r11.tools.repository.MockedResponseRepository; +import com.r11.tools.repository.RequestHistoryRepository; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; +import java.time.LocalDateTime; + @EnableScheduling @EnableAsync @Configuration public class RetentionConfiguration { - @Async - @Scheduled(fixedDelayString = "#{${retention.minutes-to-delete-message} * 60000}") - public void deleteMessage(){ - System.out.println("Message deleting"); - } + private final MockedResponseRepository responseRepository; + private final RequestHistoryRepository historyRepository; + private final RetentionConfigurationProperties retentionProperties; + private final Logger log = LogManager.getRootLogger(); - @Async - @Scheduled(fixedDelayString = "#{${retention.minutes-to-delete-history-record} * 60000}") - public void deleteHistoryRecord(){ - System.out.println("History deleting"); - } + public RetentionConfiguration(MockedResponseRepository responseRepository, + RequestHistoryRepository historyRepository, + RetentionConfigurationProperties retentionProperties){ + this.historyRepository = historyRepository; + this.responseRepository = responseRepository; + this.retentionProperties = retentionProperties; + } + @Scheduled(fixedDelayString = "#{${retention.retention-cooldown} * 60000 }") @Async - @Scheduled(fixedDelayString = "#{${retention.minutes-to-delete-unused-message} * 60000}") - public void deleteUnusedMessages(){ - System.out.println("Unused messages deleting"); + public void deleteMessagesAndHistoryRecords(){ + log.info("OUTDATED MESSAGES AND HISTORY RECORDS DELETED!"); + responseRepository + .findAll() + .iterator() + .forEachRemaining( mockedMessage -> { + if (mockedMessage.getCreatedAt().plusMinutes(retentionProperties.getMinutesToDeleteMessage()).isBefore(LocalDateTime.now())){ + responseRepository.delete(mockedMessage); + } + } ); + + historyRepository + .findAll() + .iterator() + .forEachRemaining( + historyRecord -> { + if (historyRecord.getDateTimeStamp().plusMinutes(retentionProperties.getMinutesToDeleteHistoryRecord()).isBefore(LocalDateTime.now())){ + historyRepository.delete(historyRecord); + } + } + ); } } diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/configuration/RetentionConfigurationProperties.java b/Backend/mocked-services/src/main/java/com/r11/tools/configuration/RetentionConfigurationProperties.java index dbd78c7..0aca3f9 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/configuration/RetentionConfigurationProperties.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/configuration/RetentionConfigurationProperties.java @@ -21,5 +21,5 @@ public class RetentionConfigurationProperties { @Positive private Integer minutesToDeleteHistoryRecord; @Positive - private Integer minutesToDeleteUnusedMessage; + private Integer retentionCooldown; } diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java b/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java index 0966297..61f00fe 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/controller/MockController.java @@ -24,6 +24,7 @@ import java.util.*; @RestController @RequestMapping(path = "/api/mock") @AllArgsConstructor +@CrossOrigin(origins = "*") public class MockController { private final KlausService klausService; private final Logger log = LogManager.getRootLogger(); diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/controller/MvcExceptionHandler.java b/Backend/mocked-services/src/main/java/com/r11/tools/controller/MvcExceptionHandler.java index 2c9f582..1879df5 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/controller/MvcExceptionHandler.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/controller/MvcExceptionHandler.java @@ -7,6 +7,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.validation.BindException; import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.ExceptionHandler; @@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler; * @author Rafał Żukowicz */ @ControllerAdvice +@CrossOrigin(origins = "*") public class MvcExceptionHandler { /** diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/controller/RequestHistoryController.java b/Backend/mocked-services/src/main/java/com/r11/tools/controller/RequestHistoryController.java index 8ce8581..de220c7 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/controller/RequestHistoryController.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/controller/RequestHistoryController.java @@ -22,6 +22,7 @@ import java.util.stream.Collectors; @RestController @RequestMapping(path = "/api/event") @AllArgsConstructor +@CrossOrigin(origins = "*") public class RequestHistoryController { private final RequestHistoryService service; private final RequestHistoryMapper mapper; diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/mappers/MockedMessageMapper.java b/Backend/mocked-services/src/main/java/com/r11/tools/mappers/MockedMessageMapper.java index 882ab09..0ba9a76 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/mappers/MockedMessageMapper.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/mappers/MockedMessageMapper.java @@ -12,6 +12,7 @@ import org.mapstruct.*; public interface MockedMessageMapper { @Mapping( target = "compositePrimaryKey", expression = "java(mockedMessageDto.getClientUUID() + \"_\"" + " + mockedMessageDto.getMockedResponseId())") + @Mapping( target = "createdAt" , expression = "java(java.time.LocalDateTime.now())") MockedMessage mockedMessageDtoToMockedMessage(MockedMessageDto mockedMessageDto); MockedMessageDto mockedMessageToMockedMessageDto(MockedMessage mockedMessage); } diff --git a/Backend/mocked-services/src/main/java/com/r11/tools/model/MockedMessage.java b/Backend/mocked-services/src/main/java/com/r11/tools/model/MockedMessage.java index 29989d4..abdf15a 100644 --- a/Backend/mocked-services/src/main/java/com/r11/tools/model/MockedMessage.java +++ b/Backend/mocked-services/src/main/java/com/r11/tools/model/MockedMessage.java @@ -2,6 +2,7 @@ package com.r11.tools.model; import com.r11.tools.model.constraints.HttpCode; import java.io.Serializable; +import java.time.LocalDateTime; import java.util.Map; import java.util.UUID; import javax.validation.constraints.Positive; @@ -34,6 +35,7 @@ public class MockedMessage implements Serializable { private Map httpHeaders; @HttpCode private Integer httpStatus; + private LocalDateTime createdAt; } diff --git a/Backend/mocked-services/src/main/resources/application.properties b/Backend/mocked-services/src/main/resources/application.properties index ec3ce99..cc5394a 100644 --- a/Backend/mocked-services/src/main/resources/application.properties +++ b/Backend/mocked-services/src/main/resources/application.properties @@ -11,6 +11,6 @@ spring.redis.host=redis spring.redis.port=6379 #retention -retention.minutes-to-delete-message=1 -retention.minutes-to-delete-history-record=2 -retention.minutes-to-delete-unused-message=3 +retention.minutes-to-delete-message=120 +retention.minutes-to-delete-history-record=1440 +retention.retention-cooldown=1440