The core infrastructure backend (API, database, Docker, etc).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

181 lines
3.9 KiB

-- Collection_ReadWithGroupsAndUsersByOrganizationId
IF OBJECT_ID('[dbo].[Collection_ReadWithGroupsAndUsersByOrganizationId]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[Collection_ReadWithGroupsAndUsersByOrganizationId]
END
GO
CREATE PROCEDURE [dbo].[Collection_ReadWithGroupsAndUsersByOrganizationId]
@OrganizationId UNIQUEIDENTIFIER
AS
BEGIN
SET NOCOUNT ON
EXEC [dbo].[Collection_ReadByOrganizationId] @OrganizationId
EXEC [dbo].[CollectionGroup_ReadByOrganizationId] @OrganizationId
EXEC [dbo].[CollectionUser_ReadByOrganizationId] @OrganizationId
END
GO
-- Collection_ReadWithGroupsAndUsersByUserId
IF OBJECT_ID('[dbo].[Collection_ReadWithGroupsAndUsersByUserId]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[Collection_ReadWithGroupsAndUsersByUserId]
END
GO
CREATE PROCEDURE [dbo].[Collection_ReadWithGroupsAndUsersByUserId]
@UserId UNIQUEIDENTIFIER
AS
BEGIN
SET NOCOUNT ON
DECLARE @TempUserCollections TABLE(
Id UNIQUEIDENTIFIER,
OrganizationId UNIQUEIDENTIFIER,
Name VARCHAR(MAX),
CreationDate DATETIME2(7),
RevisionDate DATETIME2(7),
ExternalId NVARCHAR(300),
ReadOnly BIT,
HidePasswords BIT)
INSERT INTO @TempUserCollections EXEC [dbo].[Collection_ReadByUserId] @UserId
SELECT
*
FROM
@TempUserCollections C
SELECT
CG.*
FROM
[dbo].[CollectionGroup] CG
INNER JOIN
@TempUserCollections C ON C.[Id] = CG.[CollectionId]
SELECT
CU.*
FROM
[dbo].[CollectionUser] CU
INNER JOIN
@TempUserCollections C ON C.[Id] = CU.[CollectionId]
END
GO
-- CollectionUser_ReadByOrganizationId
CREATE PROCEDURE [dbo].[CollectionUser_ReadByOrganizationId]
@OrganizationId UNIQUEIDENTIFIER
AS
BEGIN
SET NOCOUNT ON
SELECT
CU.*
FROM
[dbo].[CollectionUser] CU
INNER JOIN
[dbo].[OrganizationUser] OU ON OU.[Id] = CU.[OrganizationUserId]
WHERE
OU.[OrganizationId] = @OrganizationId
END
GO
-- Collection_ReadByIds
IF OBJECT_ID('[dbo].[Collection_ReadByIds]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[Collection_ReadByIds]
END
GO
CREATE PROCEDURE [dbo].[Collection_ReadByIds]
@Ids AS [dbo].[GuidIdArray] READONLY
AS
BEGIN
SET NOCOUNT ON
IF (SELECT COUNT(1) FROM @Ids) < 1
BEGIN
RETURN(-1)
END
SELECT
*
FROM
[dbo].[Collection]
WHERE
[Id] IN (SELECT [Id] FROM @Ids)
END
GO
-- Collection_DeleteByIds
IF OBJECT_ID('[dbo].[Collection_DeleteByIds]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[Collection_DeleteByIds]
END
GO
CREATE PROCEDURE [dbo].[Collection_DeleteByIds]
@Ids AS [dbo].[GuidIdArray] READONLY
AS
BEGIN
SET NOCOUNT ON
DECLARE @OrgIds AS [dbo].[GuidIdArray]
INSERT INTO @OrgIds (Id)
SELECT
[OrganizationId]
FROM
[dbo].[Collection]
WHERE
[Id] in (SELECT [Id] FROM @Ids)
GROUP BY
[OrganizationId]
DECLARE @BatchSize INT = 100
-- Delete Collection Groups
WHILE @BatchSize > 0
BEGIN
BEGIN TRANSACTION CollectionGroup_DeleteMany
DELETE TOP(@BatchSize)
FROM
[dbo].[CollectionGroup]
WHERE
[CollectionId] IN (SELECT [Id] FROM @Ids)
SET @BatchSize = @@ROWCOUNT
COMMIT TRANSACTION CollectionGroup_DeleteMany
END
-- Reset batch size
SET @BatchSize = 100
-- Delete Collections
WHILE @BatchSize > 0
BEGIN
BEGIN TRANSACTION Collection_DeleteMany
DELETE TOP(@BatchSize)
FROM
[dbo].[Collection]
WHERE
[Id] IN (SELECT [Id] FROM @Ids)
SET @BatchSize = @@ROWCOUNT
COMMIT TRANSACTION CollectionGroup_DeleteMany
END
EXEC [dbo].[User_BumpAccountRevisionDateByOrganizationIds] @OrgIds
END
GO