diff --git a/src/Sql/dbo/Stored Procedures/Cipher_Delete.sql b/src/Sql/dbo/Stored Procedures/Cipher_Delete.sql index 15701bce6e..da66b4cb00 100644 --- a/src/Sql/dbo/Stored Procedures/Cipher_Delete.sql +++ b/src/Sql/dbo/Stored Procedures/Cipher_Delete.sql @@ -5,19 +5,20 @@ AS BEGIN SET NOCOUNT ON - ;WITH [CTE] AS ( + ;WITH [IdsToDeleteCTE] AS ( SELECT - [Id], - [Edit] + [Id] FROM [dbo].[UserCipherDetails](@UserId) + WHERE + [Edit] = 1 + AND [Id] IN (SELECT * FROM @Ids) ) DELETE FROM - [CTE] + [dbo].[Cipher] WHERE - [Edit] = 1 - AND [Id] IN (@Ids) + [Id] IN (SELECT * FROM [IdsToDeleteCTE]) EXEC [dbo].[User_BumpAccountRevisionDate] @UserId -- TODO: What if some that were deleted were organization ciphers? Then bump by org ids. diff --git a/src/Sql/dbo/Stored Procedures/Cipher_Move.sql b/src/Sql/dbo/Stored Procedures/Cipher_Move.sql index 06360aed47..cd238381ef 100644 --- a/src/Sql/dbo/Stored Procedures/Cipher_Move.sql +++ b/src/Sql/dbo/Stored Procedures/Cipher_Move.sql @@ -6,21 +6,32 @@ AS BEGIN SET NOCOUNT ON - ;WITH [CTE] AS ( + DECLARE @UserIdKey VARCHAR(50) = CONCAT('"', @UserId, '"') + DECLARE @UserIdPath VARCHAR(50) = CONCAT('$.', @UserIdKey) + + ;WITH [IdsToMoveCTE] AS ( SELECT - [Id], - [Edit], - [FolderId] + [Id] FROM [dbo].[UserCipherDetails](@UserId) + WHERE + [Edit] = 1 + AND [Id] IN (SELECT * FROM @Ids) ) UPDATE - [CTE] + [dbo].[Cipher] SET - [FolderId] = @FolderId + [Folders] = + CASE + WHEN @FolderId IS NOT NULL AND [Folders] IS NULL THEN + CONCAT('{', @UserIdKey, ':"', @FolderId, '"', '}') + WHEN @FolderId IS NOT NULL THEN + JSON_MODIFY([Folders], @UserIdPath, CAST(@FolderId AS VARCHAR(50))) + ELSE + JSON_MODIFY([Folders], @UserIdPath, NULL) + END WHERE - [Edit] = 1 - AND [Id] IN (@Ids) + [Id] IN (SELECT * FROM [IdsToMoveCTE]) EXEC [dbo].[User_BumpAccountRevisionDate] @UserId -- TODO: What if some that were updated were organization ciphers? Then bump by org ids.