mirror of
https://github.com/bitwarden/server.git
synced 2024-12-05 14:23:30 +01:00
86 lines
2.3 KiB
MySQL
86 lines
2.3 KiB
MySQL
|
CREATE OR ALTER PROCEDURE [dbo].[CollectionCipher_AddCollectionsForManyCiphers]
|
||
|
@CipherIds AS [dbo].[GuidIdArray] READONLY,
|
||
|
@OrganizationId UNIQUEIDENTIFIER,
|
||
|
@CollectionIds AS [dbo].[GuidIdArray] READONLY
|
||
|
AS
|
||
|
BEGIN
|
||
|
SET NOCOUNT ON
|
||
|
|
||
|
CREATE TABLE #AvailableCollections (
|
||
|
[Id] UNIQUEIDENTIFIER
|
||
|
)
|
||
|
|
||
|
INSERT INTO #AvailableCollections
|
||
|
SELECT
|
||
|
C.[Id]
|
||
|
FROM
|
||
|
[dbo].[Collection] C
|
||
|
INNER JOIN
|
||
|
[dbo].[Organization] O ON O.[Id] = C.[OrganizationId]
|
||
|
WHERE
|
||
|
O.[Id] = @OrganizationId AND O.[Enabled] = 1
|
||
|
|
||
|
IF (SELECT COUNT(1) FROM #AvailableCollections) < 1
|
||
|
BEGIN
|
||
|
-- No collections available
|
||
|
RETURN
|
||
|
END
|
||
|
|
||
|
;WITH [SourceCollectionCipherCTE] AS(
|
||
|
SELECT
|
||
|
[Collection].[Id] AS [CollectionId],
|
||
|
[Cipher].[Id] AS [CipherId]
|
||
|
FROM
|
||
|
@CollectionIds AS [Collection]
|
||
|
CROSS JOIN
|
||
|
@CipherIds AS [Cipher]
|
||
|
WHERE
|
||
|
[Collection].[Id] IN (SELECT [Id] FROM #AvailableCollections)
|
||
|
)
|
||
|
MERGE
|
||
|
[CollectionCipher] AS [Target]
|
||
|
USING
|
||
|
[SourceCollectionCipherCTE] AS [Source]
|
||
|
ON
|
||
|
[Target].[CollectionId] = [Source].[CollectionId]
|
||
|
AND [Target].[CipherId] = [Source].[CipherId]
|
||
|
WHEN NOT MATCHED BY TARGET THEN
|
||
|
INSERT VALUES
|
||
|
(
|
||
|
[Source].[CollectionId],
|
||
|
[Source].[CipherId]
|
||
|
)
|
||
|
;
|
||
|
|
||
|
EXEC [dbo].[User_BumpAccountRevisionDateByOrganizationId] @OrganizationId
|
||
|
END
|
||
|
GO
|
||
|
|
||
|
CREATE OR ALTER PROCEDURE [dbo].[CollectionCipher_RemoveCollectionsForManyCiphers]
|
||
|
@CipherIds AS [dbo].[GuidIdArray] READONLY,
|
||
|
@OrganizationId UNIQUEIDENTIFIER,
|
||
|
@CollectionIds AS [dbo].[GuidIdArray] READONLY
|
||
|
AS
|
||
|
BEGIN
|
||
|
SET NOCOUNT ON
|
||
|
|
||
|
DECLARE @BatchSize INT = 100
|
||
|
|
||
|
WHILE @BatchSize > 0
|
||
|
BEGIN
|
||
|
BEGIN TRANSACTION CollectionCipher_DeleteMany
|
||
|
DELETE TOP(@BatchSize)
|
||
|
FROM
|
||
|
[dbo].[CollectionCipher]
|
||
|
WHERE
|
||
|
[CipherId] IN (SELECT [Id] FROM @CipherIds) AND
|
||
|
[CollectionId] IN (SELECT [Id] FROM @CollectionIds)
|
||
|
|
||
|
SET @BatchSize = @@ROWCOUNT
|
||
|
COMMIT TRANSACTION CollectionCipher_DeleteMany
|
||
|
END
|
||
|
|
||
|
EXEC [dbo].[User_BumpAccountRevisionDateByOrganizationId] @OrganizationId
|
||
|
END
|
||
|
GO
|