notification.go (3207B)
1 // GoToSocial 2 // Copyright (C) GoToSocial Authors admin@gotosocial.org 3 // SPDX-License-Identifier: AGPL-3.0-or-later 4 // 5 // This program is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU Affero General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // This program is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU Affero General Public License for more details. 14 // 15 // You should have received a copy of the GNU Affero General Public License 16 // along with this program. If not, see <http://www.gnu.org/licenses/>. 17 18 package db 19 20 import ( 21 "context" 22 23 "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" 24 ) 25 26 // Notification contains functions for creating and getting notifications. 27 type Notification interface { 28 // GetNotifications returns a slice of notifications that pertain to the given accountID. 29 // 30 // Returned notifications will be ordered ID descending (ie., highest/newest to lowest/oldest). 31 GetAccountNotifications(ctx context.Context, accountID string, maxID string, sinceID string, minID string, limit int, excludeTypes []string) ([]*gtsmodel.Notification, Error) 32 33 // GetNotification returns one notification according to its id. 34 GetNotificationByID(ctx context.Context, id string) (*gtsmodel.Notification, Error) 35 36 // GetNotification gets one notification according to the provided parameters, if it exists. 37 // Since not all notifications are about a status, statusID can be an empty string. 38 GetNotification(ctx context.Context, notificationType gtsmodel.NotificationType, targetAccountID string, originAccountID string, statusID string) (*gtsmodel.Notification, Error) 39 40 // PutNotification will insert the given notification into the database. 41 PutNotification(ctx context.Context, notif *gtsmodel.Notification) error 42 43 // DeleteNotificationByID deletes one notification according to its id, 44 // and removes that notification from the in-memory cache. 45 DeleteNotificationByID(ctx context.Context, id string) Error 46 47 // DeleteNotifications mass deletes notifications targeting targetAccountID 48 // and/or originating from originAccountID. 49 // 50 // If targetAccountID is set and originAccountID isn't, all notifications 51 // that target the given account will be deleted. 52 // 53 // If originAccountID is set and targetAccountID isn't, all notifications 54 // originating from the given account will be deleted. 55 // 56 // If both are set, then notifications that target targetAccountID and 57 // originate from originAccountID will be deleted. 58 // 59 // At least one parameter must not be an empty string. 60 DeleteNotifications(ctx context.Context, types []string, targetAccountID string, originAccountID string) Error 61 62 // DeleteNotificationsForStatus deletes all notifications that relate to 63 // the given statusID. This function is useful when a status has been deleted, 64 // and so notifications relating to that status must also be deleted. 65 DeleteNotificationsForStatus(ctx context.Context, statusID string) Error 66 }