summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/server/api/helpers.go13
1 files changed, 12 insertions, 1 deletions
diff --git a/internal/server/api/helpers.go b/internal/server/api/helpers.go
index c4deb6c..27c6f55 100644
--- a/internal/server/api/helpers.go
+++ b/internal/server/api/helpers.go
@@ -132,10 +132,20 @@ func UserPropagate(
}
const getNotificationsQuery = `-- name: GetNotifications :many
-WITH entries AS (
+WITH
+entries AS (
SELECT source_id, last_read
FROM last_read_messages
WHERE user_id = ?
+),
+permitted_frequencies AS (
+ SELECT f.id, m.is_admin
+ FROM frequencies f
+ JOIN entries e ON f.id = e.source_id
+ LEFT JOIN members m
+ ON m.user_id = ?
+ AND m.network_id = f.network_id
+ WHERE m.is_member = true AND (f.perms != 0 OR m.is_admin = true)
)
SELECT
e.source_id,
@@ -149,6 +159,7 @@ LEFT JOIN messages m ON m.id > e.last_read
AND (m.frequency_id = e.source_id OR
(m.receiver_id = e.source_id AND m.sender_id = ?) OR
(m.sender_id = e.source_id AND m.receiver_id = ?))
+JOIN permitted_frequencies pf ON e.source_id = pf.id
GROUP BY e.source_id, e.last_read;
`