mirror of
https://github.com/bitwarden/server.git
synced 2025-07-04 17:42:49 -05:00
[PM-20041] Deleting Notifications when Task is completed (#5896)
* mark all notifications associated with a security task as deleted when the task is completed * fix spelling * formatting * refactor "Active" to "NonDeleted" * refactor "Active" to "NonDeleted" for stored procedure * only send notifications per user for each notification * move notification status updates into the DB layer to save on multiple queries and insertions from the C# * Only return UserIds from db layer * omit userId from `MarkTaskAsCompletedCommand` query. The userId from the notification will be used * update UserIds * consistency in comments regarding `taskId` and `UserId`
This commit is contained in:
@ -0,0 +1,35 @@
|
||||
CREATE OR ALTER PROCEDURE [dbo].[Notification_MarkAsDeletedByTask]
|
||||
@TaskId UNIQUEIDENTIFIER
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- Collect UserIds as they are altered
|
||||
DECLARE @UserIdsForAlteredNotifications TABLE (
|
||||
UserId UNIQUEIDENTIFIER
|
||||
);
|
||||
|
||||
-- Update existing NotificationStatus as deleted
|
||||
UPDATE ns
|
||||
SET ns.DeletedDate = GETUTCDATE()
|
||||
OUTPUT inserted.UserId INTO @UserIdsForAlteredNotifications
|
||||
FROM NotificationStatus ns
|
||||
INNER JOIN Notification n ON ns.NotificationId = n.Id
|
||||
WHERE n.TaskId = @TaskId
|
||||
AND ns.DeletedDate IS NULL;
|
||||
|
||||
-- Insert NotificationStatus records for notifications that don't have one yet
|
||||
INSERT INTO NotificationStatus (NotificationId, UserId, DeletedDate)
|
||||
OUTPUT inserted.UserId INTO @UserIdsForAlteredNotifications
|
||||
SELECT n.Id, n.UserId, GETUTCDATE()
|
||||
FROM Notification n
|
||||
LEFT JOIN NotificationStatus ns
|
||||
ON n.Id = ns.NotificationId
|
||||
WHERE n.TaskId = @TaskId
|
||||
AND ns.NotificationId IS NULL;
|
||||
|
||||
-- Return the UserIds associated with the altered notifications
|
||||
SELECT u.UserId
|
||||
FROM @UserIdsForAlteredNotifications u;
|
||||
END
|
||||
GO
|
Reference in New Issue
Block a user