Pull request #146: RED-2808: Check if dossier template name is unique in code, as uniqueConstraint on name and nullable soft_delete_time column is not working
Merge in RED/persistence-service from RED-2808 to master * commit 'af68d2f74f82e7c160f3e6f3a83cedd9bd7b7089': RED-2808: Check if dossier template name is unique in code, as uniqueConstraint on name and nullable soft_delete_time column is not working
This commit is contained in:
commit
11a7af57e4
@ -21,7 +21,7 @@ import java.util.Set;
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Table(name = "dossier_template", uniqueConstraints={@UniqueConstraint(columnNames = {"name", "soft_delete_time"})})
|
||||
@Table(name = "dossier_template")
|
||||
public class DossierTemplateEntity {
|
||||
|
||||
@Id
|
||||
|
||||
@ -2,6 +2,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
|
||||
@ -31,6 +32,11 @@ public class DossierTemplatePersistenceService {
|
||||
if (createOrUpdateDossierRequest.getDossierTemplateId() != null) {
|
||||
Optional<DossierTemplateEntity> dossierTemplate = dossierTemplateRepository.findById(createOrUpdateDossierRequest.getDossierTemplateId());
|
||||
if (dossierTemplate.isPresent()) {
|
||||
|
||||
if(!dossierTemplate.get().getName().equals(createOrUpdateDossierRequest.getName())){
|
||||
validateDossierTemplateNameIsUnique(createOrUpdateDossierRequest.getName());
|
||||
}
|
||||
|
||||
// order is important
|
||||
BeanUtils.copyProperties(createOrUpdateDossierRequest, dossierTemplate.get());
|
||||
dossierTemplate.get().setDateModified(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
@ -40,6 +46,7 @@ public class DossierTemplatePersistenceService {
|
||||
throw new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, createOrUpdateDossierRequest.getDossierTemplateId()));
|
||||
}
|
||||
} else {
|
||||
validateDossierTemplateNameIsUnique(createOrUpdateDossierRequest.getName());
|
||||
DossierTemplateEntity dossierTemplate = new DossierTemplateEntity();
|
||||
dossierTemplate.setId(UUID.randomUUID().toString());
|
||||
// order is important
|
||||
@ -51,6 +58,13 @@ public class DossierTemplatePersistenceService {
|
||||
|
||||
}
|
||||
|
||||
public void validateDossierTemplateNameIsUnique(String templateName){
|
||||
getAllDossierTemplates().forEach(existing -> {
|
||||
if(existing.getName().equals(templateName)){
|
||||
throw new ConflictException("DossierTemplate name must be unique");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public List<DossierTemplateEntity> getAllDossierTemplates() {
|
||||
return dossierTemplateRepository.findAllWhereDeletedIsFalse();
|
||||
|
||||
@ -1431,14 +1431,6 @@ databaseChangeLog:
|
||||
referencedColumnNames: id
|
||||
referencedTableName: dossier_template
|
||||
validate: true
|
||||
- changeSet:
|
||||
id: 1637073006104-55
|
||||
author: generated
|
||||
changes:
|
||||
- addUniqueConstraint:
|
||||
columnNames: name, soft_delete_time
|
||||
constraintName: uknuk7ickn8wqo3d7tlht6t54rn
|
||||
tableName: dossier_template
|
||||
- changeSet:
|
||||
id: 1637073006104-56
|
||||
author: generated
|
||||
|
||||
@ -74,4 +74,13 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(dossierTemplateClient.getAllDossierTemplates().isEmpty()).isTrue();
|
||||
}
|
||||
|
||||
|
||||
@Test(expected = FeignException.class)
|
||||
public void testDossierTemplateUniqueNameConflict(){
|
||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
var dossierTemplate2 = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user