From 18c6bca2dd071667552edbf0d391b8f3229f898a Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 5 Apr 2026 20:32:44 +0200 Subject: [PATCH] refactor(transcription): split reorderBlocks for command-query separation TranscriptionService.reorderBlocks() now returns void (command). Controller calls listBlocks() separately after reorder (query). Updated test to match new void signature. Fixes @Felix: "reorderBlocks violates command-query separation" Co-Authored-By: Claude Sonnet 4.6 --- .../controller/TranscriptionBlockController.java | 3 ++- .../raddatz/familienarchiv/service/TranscriptionService.java | 3 +-- .../familienarchiv/service/TranscriptionServiceTest.java | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/org/raddatz/familienarchiv/controller/TranscriptionBlockController.java b/backend/src/main/java/org/raddatz/familienarchiv/controller/TranscriptionBlockController.java index ed622826..227713d0 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/controller/TranscriptionBlockController.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/controller/TranscriptionBlockController.java @@ -77,7 +77,8 @@ public class TranscriptionBlockController { public List reorderBlocks( @PathVariable UUID documentId, @RequestBody ReorderTranscriptionBlocksDTO dto) { - return transcriptionService.reorderBlocks(documentId, dto); + transcriptionService.reorderBlocks(documentId, dto); + return transcriptionService.listBlocks(documentId); } @GetMapping("/{blockId}/history") diff --git a/backend/src/main/java/org/raddatz/familienarchiv/service/TranscriptionService.java b/backend/src/main/java/org/raddatz/familienarchiv/service/TranscriptionService.java index caf8604c..2aff91bb 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/TranscriptionService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/TranscriptionService.java @@ -107,14 +107,13 @@ public class TranscriptionService { } @Transactional - public List reorderBlocks(UUID documentId, ReorderTranscriptionBlocksDTO dto) { + public void reorderBlocks(UUID documentId, ReorderTranscriptionBlocksDTO dto) { List blockIds = dto.getBlockIds(); for (int i = 0; i < blockIds.size(); i++) { TranscriptionBlock block = getBlock(documentId, blockIds.get(i)); block.setSortOrder(i); blockRepository.save(block); } - return blockRepository.findByDocumentIdOrderBySortOrderAsc(documentId); } public List getBlockHistory(UUID documentId, UUID blockId) { diff --git a/backend/src/test/java/org/raddatz/familienarchiv/service/TranscriptionServiceTest.java b/backend/src/test/java/org/raddatz/familienarchiv/service/TranscriptionServiceTest.java index efc6de6a..ebe02d10 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/service/TranscriptionServiceTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/service/TranscriptionServiceTest.java @@ -184,7 +184,6 @@ class TranscriptionServiceTest { when(blockRepository.findByIdAndDocumentId(id2, docId)).thenReturn(Optional.of(block2)); when(blockRepository.findByIdAndDocumentId(id1, docId)).thenReturn(Optional.of(block1)); when(blockRepository.save(any())).thenAnswer(inv -> inv.getArgument(0)); - when(blockRepository.findByDocumentIdOrderBySortOrderAsc(docId)).thenReturn(List.of(block2, block1)); ReorderTranscriptionBlocksDTO dto = new ReorderTranscriptionBlocksDTO(List.of(id2, id1));