From afcf789da3b21480e6b2e4c23e972dcf385d9ac8 Mon Sep 17 00:00:00 2001 From: juarez Date: Tue, 20 Feb 2024 20:22:40 +0100 Subject: [PATCH] Bugfix: fetch notifications query --- .../de/samply/db/repository/NotificationRepository.java | 8 ++++++-- .../java/de/samply/notification/NotificationService.java | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/samply/db/repository/NotificationRepository.java b/src/main/java/de/samply/db/repository/NotificationRepository.java index a1f14b2..6ce399c 100644 --- a/src/main/java/de/samply/db/repository/NotificationRepository.java +++ b/src/main/java/de/samply/db/repository/NotificationRepository.java @@ -3,6 +3,7 @@ import de.samply.db.model.Notification; import de.samply.db.model.Project; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import java.util.List; @@ -10,6 +11,9 @@ @Repository public interface NotificationRepository extends JpaRepository { - List findAllByProjectOrderByTimestampDesc(Project project); - List findAllByProjectAndBridgeheadOrBridgeheadIsNullOrderByTimestampDesc(Project project, String bridgehead); + List findByProjectOrderByTimestampDesc(Project project); + + @Query("SELECT n FROM Notification n WHERE n.project = :project AND (n.bridgehead = :bridgehead OR n.bridgehead IS NULL) " + + "ORDER BY n.timestamp DESC") + List findByProjectAndBridgeheadOrBridgeheadIsNullOrderByTimestampDesc(Project project, String bridgehead); } diff --git a/src/main/java/de/samply/notification/NotificationService.java b/src/main/java/de/samply/notification/NotificationService.java index aa7c035..e488d80 100644 --- a/src/main/java/de/samply/notification/NotificationService.java +++ b/src/main/java/de/samply/notification/NotificationService.java @@ -72,10 +72,10 @@ public List fetchUserVisibleNotifications( List bridgeheads = fetchUserVisibleBridgeheads(bridgheadOptional); projects.forEach(project -> { if (bridgeheads.isEmpty() && sessionUser.getUserOrganisationRoles().containsRole(OrganisationRole.PROJECT_MANAGER_ADMIN)) { - notificationRepository.findAllByProjectOrderByTimestampDesc(project); + result.addAll(notificationRepository.findByProjectOrderByTimestampDesc(project)); } else { bridgeheads.forEach(bridgehead -> result.addAll( - notificationRepository.findAllByProjectAndBridgeheadOrBridgeheadIsNullOrderByTimestampDesc(project, bridgehead))); + notificationRepository.findByProjectAndBridgeheadOrBridgeheadIsNullOrderByTimestampDesc(project, bridgehead))); } }); return result.stream().map(notification ->