From 3a58115acf57f46a0737f885cfb46e6023adc2fe Mon Sep 17 00:00:00 2001 From: Ike Kottlowski Date: Thu, 29 Jan 2026 21:34:43 -0500 Subject: [PATCH] feat: add AccountRevisionDate bump for grantee users in the confirmed status --- .../Repositories/EmergencyAccessRepository.cs | 11 +++---- .../EmergencyAccess_DeleteManyById.sql | 33 +++++++++---------- ...-01-23_00_AddDeleteManyEmergencyAccess.sql | 33 +++++++++---------- 3 files changed, 36 insertions(+), 41 deletions(-) diff --git a/src/Infrastructure.EntityFramework/Auth/Repositories/EmergencyAccessRepository.cs b/src/Infrastructure.EntityFramework/Auth/Repositories/EmergencyAccessRepository.cs index 3beb682721..1c12b5eb6d 100644 --- a/src/Infrastructure.EntityFramework/Auth/Repositories/EmergencyAccessRepository.cs +++ b/src/Infrastructure.EntityFramework/Auth/Repositories/EmergencyAccessRepository.cs @@ -149,21 +149,18 @@ public class EmergencyAccessRepository : Repository ea.Status == EmergencyAccessStatusType.Confirmed) .Where(ea => ea.GranteeId.HasValue) .Select(ea => ea.GranteeId!.Value) // .Value is safe here due to the Where above .Distinct(); - await dbContext.UserBumpManyAccountRevisionDatesAsync( - [.. granteeIds] - ); - + dbContext.EmergencyAccesses.RemoveRange(entitiesToRemove); + await dbContext.UserBumpManyAccountRevisionDatesAsync([.. granteeIds]); await dbContext.SaveChangesAsync(); } } diff --git a/src/Sql/dbo/Auth/Stored Procedures/EmergencyAccess_DeleteManyById.sql b/src/Sql/dbo/Auth/Stored Procedures/EmergencyAccess_DeleteManyById.sql index ca536b30c1..98e4752d48 100644 --- a/src/Sql/dbo/Auth/Stored Procedures/EmergencyAccess_DeleteManyById.sql +++ b/src/Sql/dbo/Auth/Stored Procedures/EmergencyAccess_DeleteManyById.sql @@ -4,18 +4,19 @@ AS BEGIN SET NOCOUNT ON - -- track GranteeIds for bumping revision date prior to deletion - DECLARE @GranteeIds AS TABLE (UserId UNIQUEIDENTIFIER) + DECLARE @UserIds AS [GuidIdArray]; - -- this matches the logic in User_BumpAccountRevisionDateByEmergencyAccessGranteeId - INSERT INTO @GranteeIds - (UserId) - SELECT DISTINCT GranteeId + INSERT INTO @UserIds + SELECT DISTINCT + [GranteeId] FROM [dbo].[EmergencyAccess] EA - WHERE EA.Id IN (SELECT Id - FROM @EmergencyAccessIds - WHERE EA.[Status] = 2 ) + INNER JOIN + @EmergencyAccessIds EAI ON EAI.[Id] = EA.[Id] + WHERE + EA.[Status] = 2 + AND + EA.[GranteeId] IS NOT NULL DECLARE @BatchSize INT = 100 @@ -26,17 +27,15 @@ BEGIN DELETE TOP(@BatchSize) EA FROM [dbo].[EmergencyAccess] EA - INNER JOIN - @EmergencyAccessIds EAI ON EAI.Id = EA.Id + INNER JOIN + @EmergencyAccessIds EAI ON EAI.[Id] = EA.[Id] SET @BatchSize = @@ROWCOUNT + END -- Bump AccountRevisionDate for affected users after deletions - Exec [dbo].[User_BumpManyAccountRevisionDates] - ( - SELECT [UserId] - FROM @GranteeIds - ) + Exec [dbo].[User_BumpManyAccountRevisionDates] @UserIds + END -GO \ No newline at end of file +GO diff --git a/util/Migrator/DbScripts/2026-01-23_00_AddDeleteManyEmergencyAccess.sql b/util/Migrator/DbScripts/2026-01-23_00_AddDeleteManyEmergencyAccess.sql index 1c4a9c92b6..30f2c3d950 100644 --- a/util/Migrator/DbScripts/2026-01-23_00_AddDeleteManyEmergencyAccess.sql +++ b/util/Migrator/DbScripts/2026-01-23_00_AddDeleteManyEmergencyAccess.sql @@ -4,18 +4,19 @@ AS BEGIN SET NOCOUNT ON - -- track GranteeIds for bumping revision date prior to deletion - DECLARE @GranteeIds AS TABLE (UserId UNIQUEIDENTIFIER) + DECLARE @UserIds AS [GuidIdArray]; - -- this matches the logic in User_BumpAccountRevisionDateByEmergencyAccessGranteeId - INSERT INTO @GranteeIds - (UserId) - SELECT DISTINCT GranteeId + INSERT INTO @UserIds + SELECT DISTINCT + [GranteeId] FROM [dbo].[EmergencyAccess] EA - WHERE EA.Id IN (SELECT Id - FROM @EmergencyAccessIds - WHERE EA.[Status] = 2 ) + INNER JOIN + @EmergencyAccessIds EAI ON EAI.[Id] = EA.[Id] + WHERE + EA.[Status] = 2 + AND + EA.[GranteeId] IS NOT NULL DECLARE @BatchSize INT = 100 @@ -26,17 +27,15 @@ BEGIN DELETE TOP(@BatchSize) EA FROM [dbo].[EmergencyAccess] EA - INNER JOIN - @EmergencyAccessIds EAI ON EAI.Id = EA.Id + INNER JOIN + @EmergencyAccessIds EAI ON EAI.[Id] = EA.[Id] SET @BatchSize = @@ROWCOUNT + END -- Bump AccountRevisionDate for affected users after deletions - Exec [dbo].[User_BumpManyAccountRevisionDates] - ( - SELECT [UserId] - FROM @GranteeIds - ) + Exec [dbo].[User_BumpManyAccountRevisionDates] @UserIds + END -GO \ No newline at end of file +GO