1
0
mirror of https://github.com/bitwarden/server synced 2025-12-06 00:03:34 +00:00
Files
server/util/Migrator/DbScripts/2025-09-23_00_UpdateCollectionCipher_UpdateCollectionsAdmin.sql
2025-09-26 10:05:56 -07:00

56 lines
1.5 KiB
Transact-SQL

CREATE OR ALTER PROCEDURE [dbo].[CollectionCipher_UpdateCollectionsAdmin]
@CipherId UNIQUEIDENTIFIER,
@OrganizationId UNIQUEIDENTIFIER,
@CollectionIds AS [dbo].[GuidIdArray] READONLY
AS
BEGIN
SET NOCOUNT ON;
-- Available collections for this org, excluding default collections
SELECT
C.[Id]
INTO #TempAvailableCollections
FROM [dbo].[Collection] AS C
WHERE
C.[OrganizationId] = @OrganizationId
AND C.[Type] <> 1; -- exclude DefaultUserCollection
-- Insert new collection assignments
INSERT INTO [dbo].[CollectionCipher] (
[CollectionId],
[CipherId]
)
SELECT
S.[Id],
@CipherId
FROM @CollectionIds AS S
INNER JOIN #TempAvailableCollections AS A
ON A.[Id] = S.[Id]
WHERE NOT EXISTS (
SELECT 1
FROM [dbo].[CollectionCipher] AS CC
WHERE CC.[CollectionId] = S.[Id]
AND CC.[CipherId] = @CipherId
);
-- Delete removed collection assignments
DELETE CC
FROM [dbo].[CollectionCipher] AS CC
INNER JOIN #TempAvailableCollections AS A
ON A.[Id] = CC.[CollectionId]
WHERE CC.[CipherId] = @CipherId
AND NOT EXISTS (
SELECT 1
FROM @CollectionIds AS S
WHERE S.[Id] = CC.[CollectionId]
);
IF @OrganizationId IS NOT NULL
BEGIN
EXEC [dbo].[User_BumpAccountRevisionDateByOrganizationId] @OrganizationId;
END
DROP TABLE #TempAvailableCollections;
END
GO