Skip to content

Commit 48ab02d

Browse files
Merge pull request #240 from InseeFr/devNewDailyIds
New endpoint that exposes the list of processed idInterrogations in last hours by questionnaire
2 parents 0e228b4 + 0cddc9a commit 48ab02d

30 files changed

+354
-18
lines changed

src/main/java/fr/insee/genesis/controller/rest/responses/InterrogationController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package fr.insee.genesis.controller.rest.responses;
22

3-
import fr.insee.genesis.controller.dto.InterrogationId;
3+
import fr.insee.genesis.domain.model.surveyunit.InterrogationId;
44
import fr.insee.genesis.controller.rest.CommonApiResponse;
55
import fr.insee.genesis.domain.ports.api.SurveyUnitApiPort;
66
import io.swagger.v3.oas.annotations.Operation;

src/main/java/fr/insee/genesis/controller/rest/responses/RawResponseController.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,17 @@ public ResponseEntity<String> processJsonRawData(
180180
}
181181
}
182182

183+
@Operation(summary = "Get processed data ids from last n hours (default 24h)")
184+
@GetMapping(path = "/lunatic-json/processed/ids")
185+
@PreAuthorize("hasRole('ADMIN')")
186+
public ResponseEntity<Map<String, List<String>>> getProcessedDataIdsSinceHours(
187+
@RequestParam("questionnaireId") String questionnaireId,
188+
@RequestParam(name = "sinceHours", defaultValue = "24") int hours
189+
) {
190+
log.info("Retrieve ids of data processed in last {}h", hours);
191+
Map<String, List<String>> result = lunaticJsonRawDataApiPort.findProcessedIdsgroupedByQuestionnaireSince(LocalDateTime.now().minusHours(hours).minusMinutes(10));
192+
return ResponseEntity.ok(result);
193+
}
183194
@Operation(summary = "Get lunatic JSON data from one campaign in Genesis Database, filtered by optional start and end dates")
184195
@GetMapping(path = "/lunatic-json/{campaignId}")
185196
@PreAuthorize("hasRole('USER_KRAFTWERK')")

src/main/java/fr/insee/genesis/controller/rest/responses/ResponseController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import fr.insee.bpm.metadata.reader.lunatic.LunaticReader;
77
import fr.insee.genesis.Constants;
88
import fr.insee.genesis.controller.adapter.LunaticXmlAdapter;
9-
import fr.insee.genesis.controller.dto.InterrogationId;
9+
import fr.insee.genesis.domain.model.surveyunit.InterrogationId;
1010
import fr.insee.genesis.controller.dto.SurveyUnitDto;
1111
import fr.insee.genesis.controller.dto.SurveyUnitInputDto;
1212
import fr.insee.genesis.controller.dto.SurveyUnitQualityToolDto;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package fr.insee.genesis.domain.model.surveyunit;
2+
3+
import lombok.Builder;
4+
5+
import java.util.List;
6+
7+
8+
@Builder
9+
public record GroupedInterrogation(
10+
String questionnaireId,
11+
String partitionOrCampaignId,
12+
List<String> interrogationIds
13+
){}

src/main/java/fr/insee/genesis/controller/dto/InterrogationId.java renamed to src/main/java/fr/insee/genesis/domain/model/surveyunit/InterrogationId.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package fr.insee.genesis.controller.dto;
1+
package fr.insee.genesis.domain.model.surveyunit;
22

33
import lombok.AllArgsConstructor;
44
import lombok.NoArgsConstructor;

src/main/java/fr/insee/genesis/domain/ports/api/DataProcessingContextApiPort.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@ void saveKraftwerkExecutionSchedule(String partitionId,
3232

3333
DataProcessingContextModel getContext(String interrogationId) throws GenesisException;
3434
DataProcessingContextModel getContextByPartitionId(String partitionId) throws GenesisException;
35+
3536
}

src/main/java/fr/insee/genesis/domain/ports/api/LunaticJsonRawDataApiPort.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@
1111
import org.springframework.data.domain.Page;
1212
import org.springframework.data.domain.Pageable;
1313

14+
import java.time.LocalDateTime;
1415
import java.time.Instant;
1516
import java.util.List;
17+
import java.util.Map;
1618
import java.util.Set;
1719

1820
public interface LunaticJsonRawDataApiPort {
@@ -27,4 +29,5 @@ public interface LunaticJsonRawDataApiPort {
2729
Page<LunaticJsonRawDataModel> findRawDataByCampaignIdAndDate(String campaignId, Instant startDt, Instant endDt, Pageable pageable);
2830

2931
DataProcessResult processRawData(String campaignName, List<String> interrogationIdList, List<GenesisError> errors) throws GenesisException;
32+
Map<String, List<String>> findProcessedIdsgroupedByQuestionnaireSince(LocalDateTime since);
3033
}

src/main/java/fr/insee/genesis/domain/ports/api/SurveyUnitApiPort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import fr.insee.bpm.metadata.model.VariablesMap;
44
import fr.insee.genesis.controller.dto.CampaignWithQuestionnaire;
5-
import fr.insee.genesis.controller.dto.InterrogationId;
5+
import fr.insee.genesis.domain.model.surveyunit.InterrogationId;
66
import fr.insee.genesis.controller.dto.QuestionnaireWithCampaign;
77
import fr.insee.genesis.controller.dto.SurveyUnitDto;
88
import fr.insee.genesis.controller.dto.SurveyUnitInputDto;

src/main/java/fr/insee/genesis/domain/ports/spi/DataProcessingContextPersistancePort.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
public interface DataProcessingContextPersistancePort {
1010
DataProcessingContextDocument findByPartitionId(String partitionId);
1111

12+
List<DataProcessingContextModel> findByPartitionIds(List<String> partitionIds);
13+
1214
void save(DataProcessingContextDocument dataProcessingContextDocument);
1315

1416
void saveAll(List<DataProcessingContextDocument> dataProcessingContextDocuments);

src/main/java/fr/insee/genesis/domain/ports/spi/LunaticJsonRawDataPersistencePort.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package fr.insee.genesis.domain.ports.spi;
22

3+
import fr.insee.genesis.domain.model.surveyunit.GroupedInterrogation;
34
import fr.insee.genesis.domain.model.surveyunit.Mode;
45
import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel;
56
import org.springframework.data.domain.Page;
67
import org.springframework.data.domain.Pageable;
78

9+
import java.time.LocalDateTime;
810
import java.time.Instant;
911
import java.util.List;
1012
import java.util.Set;
@@ -18,4 +20,5 @@ public interface LunaticJsonRawDataPersistencePort {
1820
Set<String> findDistinctQuestionnaireIds();
1921
Page<LunaticJsonRawDataModel> findByCampaignIdAndDate(String campaignId, Instant startDt, Instant endDt, Pageable pageable);
2022
long countResponsesByQuestionnaireId(String questionnaireId);
23+
List<GroupedInterrogation> findProcessedIdsGroupedByQuestionnaireSince(LocalDateTime since);
2124
}

0 commit comments

Comments
 (0)