diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java index 30f299e4c..2b14a7384 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/SaasMigrationService.java @@ -96,6 +96,23 @@ public class SaasMigrationService implements TenantSyncService { for (var file : files) { + var dossier = dossierService.getDossierById(file.getDossierId()); + + if (dossier.getHardDeletedTime() != null) { + if (fileStatusPersistenceService.getStatus(file.getFileId()).getHardDeletedTime() != null) { + saasMigrationStatusPersistenceService.updateStatus(file.getFileId(), SaasMigrationStatus.FINISHED); + continue; + } else { + fileStatusPersistenceService.hardDelete(file.getFileId(), dossier.getHardDeletedTime()); + saasMigrationStatusPersistenceService.updateStatus(file.getFileId(), SaasMigrationStatus.FINISHED); + continue; + } + } + if (fileStatusPersistenceService.getStatus(file.getFileId()).getHardDeletedTime() != null) { + saasMigrationStatusPersistenceService.updateStatus(file.getFileId(), SaasMigrationStatus.FINISHED); + continue; + } + if (!file.getStatus().equals(SaasMigrationStatus.MIGRATION_REQUIRED)) { log.info("Skipping {} for tenant {} since migration status is {}", file.getFileId(), TenantContext.getTenantId(), file.getStatus()); continue; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java index 4ca594587..1bfe44a87 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java @@ -403,7 +403,10 @@ public class FileStatusPersistenceService { public List getStatusesForDossierTemplate(String dossierTemplateId) { return dossierService.findAllDossiersForDossierTemplateId(dossierTemplateId) - .stream().map(dossier -> fileRepository.findByDossierId(dossier.getId())).flatMap(List::stream).toList(); + .stream() + .map(dossier -> fileRepository.findByDossierId(dossier.getId())) + .flatMap(List::stream) + .toList(); } @@ -444,6 +447,12 @@ public class FileStatusPersistenceService { public void hardDelete(String fileId) { var now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS); + hardDelete(fileId, now); + } + + + @Transactional + public void hardDelete(String fileId, OffsetDateTime now) { fileRepository.hardDeleteFiles(List.of(fileId), ProcessingStatus.PROCESSED, now); fileAttributesRepository.deleteByFileId(fileId); @@ -453,7 +462,7 @@ public class FileStatusPersistenceService { @Transactional public void softDelete(String fileId, OffsetDateTime softDeletedTime) { - fileRepository.setSoftDelete(fileId, ProcessingStatus.PROCESSED, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), softDeletedTime); + fileRepository.setSoftDelete(fileId, ProcessingStatus.PROCESSED, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), softDeletedTime); }