Pull request #99: RED-2583 conflict with deleted dossierTemplate name

Merge in RED/persistence-service from bugfix/RED-2583 to master

* commit '0305694baa8dea453f9137362a54dcd880b7f08b':
  RED-2583 conflict with deleted dossierTemplate name
This commit is contained in:
Corina Olariu 2021-11-03 15:19:23 +01:00 committed by Timo Bejan
commit 7fe73674d2
4 changed files with 13 additions and 17 deletions

View File

@ -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)

View File

@ -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!");
}

View File

@ -9,8 +9,9 @@ import java.util.Optional;
public interface DossierTemplateRepository extends JpaRepository<DossierTemplateEntity, String> {
@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<DossierTemplateEntity> findAllWhereDeletedIsFalse();
Optional<DossierTemplateEntity> findByIdAndDeleted(String dossierTemplateId, boolean isDeleted);
@Query("select d from DossierTemplateEntity d where d.id = :dossierTemplateId and d.softDeleteTime is null")
Optional<DossierTemplateEntity> findByIdAndNotDeleted(String dossierTemplateId);
}

View File

@ -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");
}
}