diff --git a/backend/src/main/java/org/raddatz/familienarchiv/service/AnnotationService.java b/backend/src/main/java/org/raddatz/familienarchiv/service/AnnotationService.java index e43b78b5..7616a9a0 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/AnnotationService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/AnnotationService.java @@ -1,6 +1,7 @@ package org.raddatz.familienarchiv.service; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.raddatz.familienarchiv.dto.CreateAnnotationDTO; import org.raddatz.familienarchiv.dto.UpdateAnnotationDTO; import org.raddatz.familienarchiv.exception.DomainException; @@ -8,12 +9,14 @@ import org.raddatz.familienarchiv.exception.ErrorCode; import org.raddatz.familienarchiv.model.DocumentAnnotation; import org.raddatz.familienarchiv.repository.AnnotationRepository; import org.raddatz.familienarchiv.repository.TranscriptionBlockRepository; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.UUID; +@Slf4j @Service @RequiredArgsConstructor public class AnnotationService { @@ -74,7 +77,12 @@ public class AnnotationService { if (dto.getWidth() != null) annotation.setWidth(dto.getWidth()); if (dto.getHeight() != null) annotation.setHeight(dto.getHeight()); - return annotationRepository.save(annotation); + try { + return annotationRepository.save(annotation); + } catch (DataIntegrityViolationException e) { + log.warn("Annotation bounds constraint violated for {}: {}", annotationId, e.getMessage()); + throw DomainException.badRequest(ErrorCode.ANNOTATION_UPDATE_FAILED, "Bounds out of range"); + } } @Transactional