[feature] Implement types[] param for notifications (#3009)

Counterpart of exclude_types[].

Also updates Swagger spec for types[] to use the correct param name and enumerate possible values.

Fixes #3003
This commit is contained in:
Vyr Cossont 2024-06-17 12:50:50 -07:00 committed by GitHub
commit b08c1bd0cb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 459 additions and 13 deletions

View file

@ -200,6 +200,7 @@ func (n *notificationDB) GetAccountNotifications(
sinceID string,
minID string,
limit int,
includeTypes []string,
excludeTypes []string,
) ([]*gtsmodel.Notification, error) {
// Ensure reasonable
@ -237,9 +238,14 @@ func (n *notificationDB) GetAccountNotifications(
frontToBack = false // page up
}
for _, excludeType := range excludeTypes {
if len(includeTypes) > 0 {
// Include only requested notification types.
q = q.Where("? IN (?)", bun.Ident("notification.notification_type"), bun.In(includeTypes))
}
if len(excludeTypes) > 0 {
// Filter out unwanted notif types.
q = q.Where("? != ?", bun.Ident("notification.notification_type"), excludeType)
q = q.Where("? NOT IN (?)", bun.Ident("notification.notification_type"), bun.In(excludeTypes))
}
// Return only notifs for this account.