diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierTemplateEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierTemplateEntity.java index 326cb7334..6eb1e7905 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierTemplateEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierTemplateEntity.java @@ -21,13 +21,13 @@ import java.util.Set; @Builder @AllArgsConstructor @NoArgsConstructor -@Table(name = "dossier_template") +@Table(name = "dossier_template", uniqueConstraints={@UniqueConstraint(columnNames = {"name", "soft_delete_time"})}) public class DossierTemplateEntity { @Id private String id; - @Column(unique = true) + @Column(name = "name") private String name; @Column(length = 4000) @@ -51,8 +51,8 @@ public class DossierTemplateEntity { @Column private OffsetDateTime validTo; - @Column - private boolean deleted; + @Column(name = "soft_delete_time") + private OffsetDateTime softDeleteTime; @ElementCollection @Enumerated(EnumType.STRING) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java index 3414dd96f..eb7176a9d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java @@ -57,7 +57,7 @@ public class DossierTemplatePersistenceService { } public DossierTemplateEntity getDossierTemplate(String dossierTemplateId) { - return dossierTemplateRepository.findByIdAndDeleted(dossierTemplateId, false).orElseThrow(() -> new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId))); + return dossierTemplateRepository.findByIdAndNotDeleted(dossierTemplateId).orElseThrow(() -> new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId))); } @Transactional @@ -68,7 +68,7 @@ public class DossierTemplatePersistenceService { dossierTemplate.setModifiedBy(deletingUserId); dossierTemplate.setDateModified(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); - dossierTemplate.setDeleted(true); + dossierTemplate.setSoftDeleteTime(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); } else { throw new BadRequestException("Cannot delete dossier template with active dossiers!"); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierTemplateRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierTemplateRepository.java index 73ced8d2a..da4575f29 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierTemplateRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierTemplateRepository.java @@ -9,8 +9,9 @@ import java.util.Optional; public interface DossierTemplateRepository extends JpaRepository { - @Query("select d from DossierTemplateEntity d where d.deleted = false or d.deleted is null") + @Query("select d from DossierTemplateEntity d where d.softDeleteTime is null") List findAllWhereDeletedIsFalse(); - Optional findByIdAndDeleted(String dossierTemplateId, boolean isDeleted); + @Query("select d from DossierTemplateEntity d where d.id = :dossierTemplateId and d.softDeleteTime is null") + Optional findByIdAndNotDeleted(String dossierTemplateId); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java index 48bcc1d2e..3366e06a1 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java @@ -24,12 +24,6 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); - try { - dossierTemplateTesterAndProvider.provideTestTemplate(); - } catch (FeignException e) { - assertThat(e.status()).isEqualTo(409); - } - var allTemplates = dossierTemplateClient.getAllDossierTemplates(); assertThat(allTemplates.size()).isEqualTo(1); assertThat(allTemplates.get(0)).isEqualTo(dossierTemplate); @@ -49,11 +43,12 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { assertThat(loadedTemplate).isEqualTo(updated); - dossierTemplateClient.getAllDossierTemplates().forEach(template -> { - dossierTemplateClient.deleteDossierTemplate(template.getId(), "1"); - }); + dossierTemplateClient.getAllDossierTemplates().forEach(template -> dossierTemplateClient.deleteDossierTemplate(template.getId(), "1")); assertThat(dossierTemplateClient.getAllDossierTemplates().isEmpty()).isTrue(); + updated = dossierTemplateClient.createOrUpdateDossierTemplate(cru); + assertThat(updated.getName()).isEqualTo("Template 1 Update"); + } }