aboutsummaryrefslogtreecommitdiffstats
path: root/models/activities/notification.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/activities/notification.go')
-rw-r--r--models/activities/notification.go9
1 files changed, 5 insertions, 4 deletions
diff --git a/models/activities/notification.go b/models/activities/notification.go
index dc1b8c6fae..b888adeb60 100644
--- a/models/activities/notification.go
+++ b/models/activities/notification.go
@@ -286,13 +286,14 @@ type UserIDCount struct {
Count int64
}
-// GetUIDsAndNotificationCounts between the two provided times
+// GetUIDsAndNotificationCounts returns the unread counts for every user between the two provided times.
+// It must return all user IDs which appear during the period, including count=0 for users who have read all.
func GetUIDsAndNotificationCounts(ctx context.Context, since, until timeutil.TimeStamp) ([]UserIDCount, error) {
- sql := `SELECT user_id, count(*) AS count FROM notification ` +
+ sql := `SELECT user_id, sum(case when status= ? then 1 else 0 end) AS count FROM notification ` +
`WHERE user_id IN (SELECT user_id FROM notification WHERE updated_unix >= ? AND ` +
- `updated_unix < ?) AND status = ? GROUP BY user_id`
+ `updated_unix < ?) GROUP BY user_id`
var res []UserIDCount
- return res, db.GetEngine(ctx).SQL(sql, since, until, NotificationStatusUnread).Find(&res)
+ return res, db.GetEngine(ctx).SQL(sql, NotificationStatusUnread, since, until).Find(&res)
}
// SetIssueReadBy sets issue to be read by given user.