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
4.5 KiB

-- Create OrganizationSponsorshipType
IF NOT EXISTS (
SELECT
*
FROM
sys.types
WHERE
[Name] = 'OrganizationSponsorshipType' AND
is_user_defined = 1
)
BEGIN
CREATE TYPE [dbo].[OrganizationSponsorshipType] AS TABLE(
[Id] UNIQUEIDENTIFIER,
[SponsoringOrganizationId] UNIQUEIDENTIFIER,
[SponsoringOrganizationUserID] UNIQUEIDENTIFIER,
[SponsoredOrganizationId] UNIQUEIDENTIFIER,
[FriendlyName] NVARCHAR(256),
[OfferedToEmail] VARCHAR(256),
[PlanSponsorshipType] TINYINT,
[LastSyncDate] DATETIME2(7),
[ValidUntil] DATETIME2(7),
[ToDelete] BIT
)
END
GO
-- OrganizationSponsorship_CreateMany
IF OBJECT_ID('[dbo].[OrganizationSponsorship_CreateMany]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[OrganizationSponsorship_CreateMany]
END
GO
CREATE PROCEDURE [dbo].[OrganizationSponsorship_CreateMany]
@OrganizationSponsorshipsInput [dbo].[OrganizationSponsorshipType] READONLY
AS
BEGIN
SET NOCOUNT ON
INSERT INTO [dbo].[OrganizationSponsorship]
(
[Id],
[SponsoringOrganizationId],
[SponsoringOrganizationUserID],
[SponsoredOrganizationId],
[FriendlyName],
[OfferedToEmail],
[PlanSponsorshipType],
[ToDelete],
[LastSyncDate],
[ValidUntil]
)
SELECT
OS.[Id],
OS.[SponsoringOrganizationId],
OS.[SponsoringOrganizationUserID],
OS.[SponsoredOrganizationId],
OS.[FriendlyName],
OS.[OfferedToEmail],
OS.[PlanSponsorshipType],
OS.[ToDelete],
OS.[LastSyncDate],
OS.[ValidUntil]
FROM
@OrganizationSponsorshipsInput OS
END
GO
-- OrganizationSponsorship_UpdateMany
IF OBJECT_ID('[dbo].[OrganizationSponsorship_UpdateMany]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[OrganizationSponsorship_UpdateMany]
END
GO
CREATE PROCEDURE [dbo].[OrganizationSponsorship_UpdateMany]
@OrganizationSponsorshipsInput [dbo].[OrganizationSponsorshipType] READONLY
AS
BEGIN
SET NOCOUNT ON
UPDATE
OS
SET
[Id] = OSI.[Id],
[SponsoringOrganizationId] = OSI.[SponsoringOrganizationId],
[SponsoringOrganizationUserID] = OSI.[SponsoringOrganizationUserID],
[SponsoredOrganizationId] = OSI.[SponsoredOrganizationId],
[FriendlyName] = OSI.[FriendlyName],
[OfferedToEmail] = OSI.[OfferedToEmail],
[PlanSponsorshipType] = OSI.[PlanSponsorshipType],
[ToDelete] = OSI.[ToDelete],
[LastSyncDate] = OSI.[LastSyncDate],
[ValidUntil] = OSI.[ValidUntil]
FROM
[dbo].[OrganizationSponsorship] OS
INNER JOIN
@OrganizationSponsorshipsInput OSI ON OS.Id = OSI.Id
END
GO
-- OrganizationSponsorship_DeleteByIds
IF OBJECT_ID('[dbo].[OrganizationSponsorship_DeleteByIds]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[OrganizationSponsorship_DeleteByIds]
END
GO
CREATE PROCEDURE [dbo].[OrganizationSponsorship_DeleteByIds]
@Ids [dbo].[GuidIdArray] READONLY
AS
BEGIN
SET NOCOUNT ON
DECLARE @BatchSize INT = 100
WHILE @BatchSize > 0
BEGIN
BEGIN TRANSACTION OrgSponsorship_DeleteMany
DELETE TOP(@BatchSize) OS
FROM
[dbo].[OrganizationSponsorship] OS
INNER JOIN
@Ids I ON I.Id = OS.Id
SET @BatchSize = @@ROWCOUNT
COMMIT TRANSACTION OrgSponsorship_DeleteMany
END
END
GO
IF OBJECT_ID('[dbo].[OrganizationSponsorship_DeleteExpired]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[OrganizationSponsorship_DeleteExpired]
END
GO
CREATE PROCEDURE [dbo].[OrganizationSponsorship_DeleteExpired]
@ValidUntilBeforeDate DATETIME2 (7)
AS
BEGIN
SET NOCOUNT ON
DECLARE @BatchSize INT = 100
WHILE @BatchSize > 0
BEGIN
DELETE TOP(@BatchSize)
FROM
[dbo].[OrganizationSponsorship]
WHERE
[ValidUntil] < @ValidUntilBeforeDate
SET @BatchSize = @@ROWCOUNT
END
END
GO
-- OrganizationSponsorship_ReadBySponsoringOrganizationId
IF OBJECT_ID('[dbo].[OrganizationSponsorship_ReadBySponsoringOrganizationId]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[OrganizationSponsorship_ReadBySponsoringOrganizationId]
END
GO
CREATE PROCEDURE [dbo].[OrganizationSponsorship_ReadBySponsoringOrganizationId]
@SponsoringOrganizationId UNIQUEIDENTIFIER
AS
BEGIN
SET NOCOUNT ON
SELECT
*
FROM
[dbo].[OrganizationSponsorshipView]
WHERE
[SponsoringOrganizationId] = @SponsoringOrganizationId
END
GO