unique constraint fix

This commit is contained in:
Timo Bejan 2021-10-15 19:04:21 +03:00
parent 7bd8214a32
commit 0a6dc82e63
3 changed files with 20 additions and 2 deletions

View File

@ -27,7 +27,7 @@ public class DossierTemplateEntity {
@Id
private String id;
@Column
@Column(unique = true)
private String name;
@Column(length = 4000)

View File

@ -6,7 +6,9 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.BadRe
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import lombok.extern.slf4j.Slf4j;
import org.postgresql.util.PSQLException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
@ -55,4 +57,15 @@ public class ControllerAdvice {
public ErrorMessage handleIBadRequestException(BadRequestException e) {
return new ErrorMessage(OffsetDateTime.now(), e.getMessage());
}
@ResponseBody
@ExceptionHandler(value = PSQLException.class)
public ResponseEntity<ErrorMessage> handleSQLException(PSQLException e) {
if (e.getMessage().contains("violates unique constraint")) {
return new ResponseEntity<>(new ErrorMessage(OffsetDateTime.now(), "Unique constraint violation"), HttpStatus.CONFLICT);
} else {
log.error("PLSQL Exception occurred: {}", e.getMessage(), e);
return new ResponseEntity<>(new ErrorMessage(OffsetDateTime.now(), "SQL Exception"), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}

View File

@ -4,6 +4,7 @@ import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemp
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
import feign.FeignException;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -21,9 +22,13 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
@Test
public void testDossierTemplate() {
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
try {
dossierTemplateTesterAndProvider.provideTestTemplate();
} catch (FeignException e) {
assertThat(e.status()).isEqualTo(409);
}
var allTemplates = dossierTemplateClient.getAllDossierTemplates();
assertThat(allTemplates.size()).isEqualTo(1);