From 4e68b81bf72fab9378aaaf8d7cef527fa5f9d4a0 Mon Sep 17 00:00:00 2001 From: Marcel Date: Tue, 2 Jun 2026 20:43:00 +0200 Subject: [PATCH] feat(document): remove conversation repository queries Delete findConversation and findSinglePersonCorrespondence (no remaining callers after the service methods were removed) and their integration test section. Drops the now-unused LocalDate import. Co-Authored-By: Claude Opus 4.8 --- .../document/DocumentRepository.java | 27 -------- .../document/DocumentRepositoryTest.java | 61 ------------------- 2 files changed, 88 deletions(-) diff --git a/backend/src/main/java/org/raddatz/familienarchiv/document/DocumentRepository.java b/backend/src/main/java/org/raddatz/familienarchiv/document/DocumentRepository.java index c28a8132..071f2276 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/document/DocumentRepository.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/document/DocumentRepository.java @@ -15,7 +15,6 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import java.time.LocalDate; import java.util.Collection; import java.util.List; import java.util.Map; @@ -81,32 +80,6 @@ public interface DocumentRepository extends JpaRepository, JpaSp Optional findFirstByMetadataCompleteFalseAndIdNot(UUID id, Sort sort); - @EntityGraph("Document.full") - @Query("SELECT DISTINCT d FROM Document d " + - "JOIN d.receivers r " + - "WHERE " + - "((d.sender.id = :person1 AND r.id = :person2) " + - " OR " + - " (d.sender.id = :person2 AND r.id = :person1)) " + - "AND d.documentDate BETWEEN :from AND :to") - List findConversation( - @Param("person1") UUID person1, - @Param("person2") UUID person2, - @Param("from") LocalDate from, - @Param("to") LocalDate to, - Sort sort); - - @EntityGraph("Document.full") - @Query("SELECT DISTINCT d FROM Document d " + - "LEFT JOIN d.receivers r " + - "WHERE (d.sender.id = :personId OR r.id = :personId) " + - "AND d.documentDate BETWEEN :from AND :to") - List findSinglePersonCorrespondence( - @Param("personId") UUID personId, - @Param("from") LocalDate from, - @Param("to") LocalDate to, - Sort sort); - @Query(nativeQuery = true, value = """ SELECT d.id FROM documents d CROSS JOIN LATERAL ( diff --git a/backend/src/test/java/org/raddatz/familienarchiv/document/DocumentRepositoryTest.java b/backend/src/test/java/org/raddatz/familienarchiv/document/DocumentRepositoryTest.java index 05a69895..234abbd8 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/document/DocumentRepositoryTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/document/DocumentRepositoryTest.java @@ -262,67 +262,6 @@ class DocumentRepositoryTest { assertThat(result.getContent()).allMatch(d -> !d.isMetadataComplete()); } - // ─── findSinglePersonCorrespondence — DISTINCT / multi-receiver safety ──── - - @Test - void findSinglePersonCorrespondence_returnsExactlyOneResult_whenDocumentHasThreeReceiversAndOneMatchesPersonId() { - Person sender = personRepository.save(Person.builder() - .firstName("Hans").lastName("Müller").build()); - Person receiver1 = personRepository.save(Person.builder() - .firstName("Anna").lastName("Schmidt").build()); - Person receiver2 = personRepository.save(Person.builder() - .firstName("Bertha").lastName("Wagner").build()); - Person receiver3 = personRepository.save(Person.builder() - .firstName("Clara").lastName("Koch").build()); - - // Document addressed to all three receivers - Document doc = documentRepository.save(Document.builder() - .title("Rundschreiben") - .originalFilename("rundschreiben.pdf") - .status(DocumentStatus.UPLOADED) - .sender(sender) - .receivers(new HashSet<>(Set.of(receiver1, receiver2, receiver3))) - .documentDate(LocalDate.of(1950, 6, 1)) - .build()); - - Sort sort = Sort.by(Sort.Direction.DESC, "documentDate"); - LocalDate from = LocalDate.of(1900, 1, 1); - LocalDate to = LocalDate.of(2000, 1, 1); - - // Query for receiver1 — the DISTINCT must collapse the 3 JOIN rows into 1 result - List results = documentRepository.findSinglePersonCorrespondence( - receiver1.getId(), from, to, sort); - - assertThat(results).hasSize(1); - assertThat(results.get(0).getId()).isEqualTo(doc.getId()); - } - - @Test - void findSinglePersonCorrespondence_includesDocumentsWherePerson_isSender() { - Person sender = personRepository.save(Person.builder() - .firstName("Hans").lastName("Müller").build()); - Person receiver = personRepository.save(Person.builder() - .firstName("Anna").lastName("Schmidt").build()); - - documentRepository.save(Document.builder() - .title("Brief als Absender") - .originalFilename("brief_absender.pdf") - .status(DocumentStatus.UPLOADED) - .sender(sender) - .receivers(new HashSet<>(Set.of(receiver))) - .documentDate(LocalDate.of(1950, 6, 1)) - .build()); - - Sort sort = Sort.by(Sort.Direction.DESC, "documentDate"); - LocalDate from = LocalDate.of(1900, 1, 1); - LocalDate to = LocalDate.of(2000, 1, 1); - - List results = documentRepository.findSinglePersonCorrespondence( - sender.getId(), from, to, sort); - - assertThat(results).hasSize(1); - } - // ─── findSegmentationQueue ──────────────────────────────────────────────── @Test