diff --git a/src/Sql/dbo/Stored Procedures/Folder_DeleteById.sql b/src/Sql/dbo/Stored Procedures/Folder_DeleteById.sql index bd22d64721..60141a042a 100644 --- a/src/Sql/dbo/Stored Procedures/Folder_DeleteById.sql +++ b/src/Sql/dbo/Stored Procedures/Folder_DeleteById.sql @@ -29,7 +29,6 @@ BEGIN AND (OU.[AccessAll] = 1 OR CU.[CollectionId] IS NOT NULL) ) ) - AND C.[Folders] IS NOT NULL AND JSON_VALUE(C.[Folders], @UserIdPath) = @Id DELETE diff --git a/src/Sql/dbo/Stored Procedures/Organization_UpdateStorage.sql b/src/Sql/dbo/Stored Procedures/Organization_UpdateStorage.sql index 17e8c8e359..7a4b2cf940 100644 --- a/src/Sql/dbo/Stored Procedures/Organization_UpdateStorage.sql +++ b/src/Sql/dbo/Stored Procedures/Organization_UpdateStorage.sql @@ -26,7 +26,6 @@ BEGIN [CTE] ON C.[Id] = [CTE].[Id] WHERE C.[OrganizationId] = @Id - AND C.[Attachments] IS NOT NULL UPDATE [dbo].[Organization] diff --git a/src/Sql/dbo/Stored Procedures/User_UpdateStorage.sql b/src/Sql/dbo/Stored Procedures/User_UpdateStorage.sql index c30e4d8841..bcc117122e 100644 --- a/src/Sql/dbo/Stored Procedures/User_UpdateStorage.sql +++ b/src/Sql/dbo/Stored Procedures/User_UpdateStorage.sql @@ -26,7 +26,6 @@ BEGIN [CTE] ON C.[Id] = [CTE].[Id] WHERE C.[UserId] = @Id - AND C.[Attachments] IS NOT NULL UPDATE [dbo].[User] diff --git a/util/Setup/DbScripts/2018-03-21_00_AdminPortal.sql b/util/Setup/DbScripts/2018-03-21_00_AdminPortal.sql index 880d85cbf9..f2439b986f 100644 --- a/util/Setup/DbScripts/2018-03-21_00_AdminPortal.sql +++ b/util/Setup/DbScripts/2018-03-21_00_AdminPortal.sql @@ -91,3 +91,142 @@ BEGIN END END GO + +IF OBJECT_ID('[dbo].[Folder_DeleteById]') IS NOT NULL +BEGIN + DROP PROCEDURE [dbo].[Folder_DeleteById] +END +GO + +CREATE PROCEDURE [dbo].[Folder_DeleteById] + @Id UNIQUEIDENTIFIER +AS +BEGIN + SET NOCOUNT ON + + DECLARE @UserId UNIQUEIDENTIFIER = (SELECT TOP 1 [UserId] FROM [dbo].[Folder] WHERE [Id] = @Id) + DECLARE @UserIdPath VARCHAR(50) = CONCAT('$."', @UserId, '"') + + UPDATE + C + SET + C.[Folders] = JSON_MODIFY(C.[Folders], @UserIdPath, NULL) + FROM + [dbo].[Cipher] C + LEFT JOIN + [dbo].[Organization] O ON C.[UserId] IS NULL AND O.[Id] = C.[OrganizationId] + LEFT JOIN + [dbo].[OrganizationUser] OU ON OU.[OrganizationId] = O.[Id] AND OU.[UserId] = @UserId + LEFT JOIN + [dbo].[CollectionCipher] CC ON C.[UserId] IS NULL AND OU.[AccessAll] = 0 AND CC.[CipherId] = C.[Id] + LEFT JOIN + [dbo].[CollectionUser] CU ON CU.[CollectionId] = CC.[CollectionId] AND CU.[OrganizationUserId] = OU.[Id] + WHERE + ( + C.[UserId] = @UserId + OR ( + C.[UserId] IS NULL + AND (OU.[AccessAll] = 1 OR CU.[CollectionId] IS NOT NULL) + ) + ) + AND JSON_VALUE(C.[Folders], @UserIdPath) = @Id + + DELETE + FROM + [dbo].[Folder] + WHERE + [Id] = @Id + + EXEC [dbo].[User_BumpAccountRevisionDate] @UserId +END +GO + +IF OBJECT_ID('[dbo].[Organization_UpdateStorage]') IS NOT NULL +BEGIN + DROP PROCEDURE [dbo].[Organization_UpdateStorage] +END +GO + +CREATE PROCEDURE [dbo].[Organization_UpdateStorage] + @Id UNIQUEIDENTIFIER +AS +BEGIN + SET NOCOUNT ON + + DECLARE @Storage BIGINT + + ;WITH [CTE] AS ( + SELECT + [Id], + ( + SELECT + SUM(CAST(JSON_VALUE(value,'$.Size') AS BIGINT)) + FROM + OPENJSON([Attachments]) + ) [Size] + FROM + [dbo].[Cipher] + ) + SELECT + @Storage = SUM([CTE].[Size]) + FROM + [dbo].[Cipher] C + LEFT JOIN + [CTE] ON C.[Id] = [CTE].[Id] + WHERE + C.[OrganizationId] = @Id + + UPDATE + [dbo].[Organization] + SET + [Storage] = @Storage, + [RevisionDate] = GETUTCDATE() + WHERE + [Id] = @Id +END +GO + +IF OBJECT_ID('[dbo].[User_UpdateStorage]') IS NOT NULL +BEGIN + DROP PROCEDURE [dbo].[User_UpdateStorage] +END +GO + +CREATE PROCEDURE [dbo].[User_UpdateStorage] + @Id UNIQUEIDENTIFIER +AS +BEGIN + SET NOCOUNT ON + + DECLARE @Storage BIGINT + + ;WITH [CTE] AS ( + SELECT + [Id], + ( + SELECT + SUM(CAST(JSON_VALUE(value,'$.Size') AS BIGINT)) + FROM + OPENJSON([Attachments]) + ) [Size] + FROM + [dbo].[Cipher] + ) + SELECT + @Storage = SUM([CTE].[Size]) + FROM + [dbo].[Cipher] C + LEFT JOIN + [CTE] ON C.[Id] = [CTE].[Id] + WHERE + C.[UserId] = @Id + + UPDATE + [dbo].[User] + SET + [Storage] = @Storage, + [RevisionDate] = GETUTCDATE() + WHERE + [Id] = @Id +END +GO