Adjust repository methods

This commit is contained in:
Thomas Rittson
2025-12-03 12:41:28 +10:00
parent 5fd5c51fec
commit 63b4f1b52d
4 changed files with 121 additions and 115 deletions

View File

@@ -3,6 +3,7 @@
-- if a default collection already exists before attempting to create one.
CREATE PROCEDURE [dbo].[Collection_UpsertDefaultCollection]
@CollectionId UNIQUEIDENTIFIER,
@OrganizationId UNIQUEIDENTIFIER,
@OrganizationUserId UNIQUEIDENTIFIER,
@Name VARCHAR(MAX),
@@ -13,70 +14,69 @@ AS
BEGIN
SET NOCOUNT ON
DECLARE @CollectionId UNIQUEIDENTIFIER;
DECLARE @ExistingCollectionId UNIQUEIDENTIFIER;
-- Check if this organization user already has a default collection
SELECT @CollectionId = c.Id
SELECT @ExistingCollectionId = c.Id
FROM [dbo].[Collection] c
INNER JOIN [dbo].[CollectionUser] cu ON cu.CollectionId = c.Id
WHERE cu.OrganizationUserId = @OrganizationUserId
AND c.OrganizationId = @OrganizationId
AND c.Type = 1; -- CollectionType.DefaultUserCollection
-- If no default collection exists, create one
IF @CollectionId IS NULL
BEGIN
SET @CollectionId = NEWID();
SET @WasCreated = 1;
-- Insert Collection
INSERT INTO [dbo].[Collection]
(
[Id],
[OrganizationId],
[Name],
[ExternalId],
[CreationDate],
[RevisionDate],
[DefaultUserCollectionEmail],
[Type]
)
VALUES
(
@CollectionId,
@OrganizationId,
@Name,
NULL, -- ExternalId
@CreationDate,
@RevisionDate,
NULL, -- DefaultUserCollectionEmail
1 -- CollectionType.DefaultUserCollection
);
-- Insert CollectionUser
INSERT INTO [dbo].[CollectionUser]
(
[CollectionId],
[OrganizationUserId],
[ReadOnly],
[HidePasswords],
[Manage]
)
VALUES
(
@CollectionId,
@OrganizationUserId,
0, -- ReadOnly = false
0, -- HidePasswords = false
1 -- Manage = true
);
-- Bump user account revision dates
EXEC [dbo].[User_BumpAccountRevisionDateByCollectionId] @CollectionId, @OrganizationId;
END
ELSE
-- If collection already exists, return early
IF @ExistingCollectionId IS NOT NULL
BEGIN
SET @WasCreated = 0;
RETURN;
END
-- Create new default collection
SET @WasCreated = 1;
-- Insert Collection
INSERT INTO [dbo].[Collection]
(
[Id],
[OrganizationId],
[Name],
[ExternalId],
[CreationDate],
[RevisionDate],
[DefaultUserCollectionEmail],
[Type]
)
VALUES
(
@CollectionId,
@OrganizationId,
@Name,
NULL, -- ExternalId
@CreationDate,
@RevisionDate,
NULL, -- DefaultUserCollectionEmail
1 -- CollectionType.DefaultUserCollection
);
-- Insert CollectionUser
INSERT INTO [dbo].[CollectionUser]
(
[CollectionId],
[OrganizationUserId],
[ReadOnly],
[HidePasswords],
[Manage]
)
VALUES
(
@CollectionId,
@OrganizationUserId,
0, -- ReadOnly = false
0, -- HidePasswords = false
1 -- Manage = true
);
-- Bump user account revision dates
EXEC [dbo].[User_BumpAccountRevisionDateByCollectionId] @CollectionId, @OrganizationId;
END
GO