From 5a5a8b6e5c957d2e3f15744a58c5dc571045ebc1 Mon Sep 17 00:00:00 2001 From: Marcel Date: Mon, 13 Apr 2026 22:31:02 +0200 Subject: [PATCH] fix(annotations): cascade-delete transcription block when annotation is deleted The DELETE endpoint was returning 500 due to a FK constraint violation. `deleteAnnotation` now calls `blockRepository.deleteByAnnotationId()` before removing the annotation. Co-Authored-By: Claude Sonnet 4.6 --- .../repository/TranscriptionBlockRepository.java | 2 ++ .../org/raddatz/familienarchiv/service/AnnotationService.java | 3 +++ 2 files changed, 5 insertions(+) diff --git a/backend/src/main/java/org/raddatz/familienarchiv/repository/TranscriptionBlockRepository.java b/backend/src/main/java/org/raddatz/familienarchiv/repository/TranscriptionBlockRepository.java index 82834365..d091f950 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/repository/TranscriptionBlockRepository.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/repository/TranscriptionBlockRepository.java @@ -16,6 +16,8 @@ public interface TranscriptionBlockRepository extends JpaRepository findByAnnotationId(UUID annotationId); + void deleteByAnnotationId(UUID annotationId); + int countByDocumentId(UUID documentId); @Query(""" 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 d7192cce..7b3e1252 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/AnnotationService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/AnnotationService.java @@ -6,6 +6,7 @@ import org.raddatz.familienarchiv.exception.DomainException; 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.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -17,6 +18,7 @@ import java.util.UUID; public class AnnotationService { private final AnnotationRepository annotationRepository; + private final TranscriptionBlockRepository blockRepository; public List listAnnotations(UUID documentId) { return annotationRepository.findByDocumentId(documentId); @@ -70,6 +72,7 @@ public class AnnotationService { throw DomainException.forbidden("Only the annotation author can delete it"); } + blockRepository.deleteByAnnotationId(annotationId); annotationRepository.delete(annotation); }