Files
server/util/Migrator/DbScripts/2026-04-07_00_CreateOrganizationInviteLink.sql
Rui Tomé e10b13f0eb [PM-34178] Add entities, repository and database migrations for Organization Invite Link feature (#7407)
* Add feature flag for Organization Invite Links

* Add OrganizationInviteLink database entity

* Add OrganizationInviteLink table sql script and also OrganizationInviteLinkView that reads from it

* Add OrganizationInviteLink stored procedures for CRUD operations

* Add SQL migration script

* Add EF migrations

* Add EF configurations

* Add IOrganizationInviteLinkRepository and integration tests

* Add OrganizationInviteLinkRepository Dapper implementation

* refactor(tests): Update OrganizationInviteLinkRepositoryTests to use [Theory] attribute for test cases
2026-04-09 15:22:38 +01:00

158 lines
3.8 KiB
Transact-SQL

-- Table
IF OBJECT_ID('[dbo].[OrganizationInviteLink]') IS NULL
BEGIN
CREATE TABLE [dbo].[OrganizationInviteLink]
(
[Id] UNIQUEIDENTIFIER NOT NULL,
[Code] UNIQUEIDENTIFIER NOT NULL,
[OrganizationId] UNIQUEIDENTIFIER NOT NULL,
[AllowedDomains] NVARCHAR(MAX) NOT NULL,
[EncryptedInviteKey] NVARCHAR(MAX) NOT NULL,
[EncryptedOrgKey] NVARCHAR(MAX) NULL,
[CreationDate] DATETIME2(7) NOT NULL,
[RevisionDate] DATETIME2(7) NOT NULL,
CONSTRAINT [PK_OrganizationInviteLink] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_OrganizationInviteLink_Organization] FOREIGN KEY ([OrganizationId]) REFERENCES [dbo].[Organization] ([Id]) ON DELETE CASCADE
);
CREATE UNIQUE NONCLUSTERED INDEX [IX_OrganizationInviteLink_OrganizationId]
ON [dbo].[OrganizationInviteLink]([OrganizationId] ASC);
CREATE UNIQUE NONCLUSTERED INDEX [IX_OrganizationInviteLink_Code]
ON [dbo].[OrganizationInviteLink]([Code] ASC);
END
GO
-- View
CREATE OR ALTER VIEW [dbo].[OrganizationInviteLinkView]
AS
SELECT
*
FROM
[dbo].[OrganizationInviteLink]
GO
-- Stored Procedures
CREATE OR ALTER PROCEDURE [dbo].[OrganizationInviteLink_Create]
@Id UNIQUEIDENTIFIER OUTPUT,
@Code UNIQUEIDENTIFIER,
@OrganizationId UNIQUEIDENTIFIER,
@AllowedDomains NVARCHAR(MAX),
@EncryptedInviteKey NVARCHAR(MAX),
@EncryptedOrgKey NVARCHAR(MAX),
@CreationDate DATETIME2(7),
@RevisionDate DATETIME2(7)
AS
BEGIN
SET NOCOUNT ON
INSERT INTO [dbo].[OrganizationInviteLink]
(
[Id],
[Code],
[OrganizationId],
[AllowedDomains],
[EncryptedInviteKey],
[EncryptedOrgKey],
[CreationDate],
[RevisionDate]
)
VALUES
(
@Id,
@Code,
@OrganizationId,
@AllowedDomains,
@EncryptedInviteKey,
@EncryptedOrgKey,
@CreationDate,
@RevisionDate
)
END
GO
CREATE OR ALTER PROCEDURE [dbo].[OrganizationInviteLink_ReadById]
@Id UNIQUEIDENTIFIER
AS
BEGIN
SET NOCOUNT ON
SELECT
*
FROM
[dbo].[OrganizationInviteLinkView]
WHERE
[Id] = @Id
END
GO
CREATE OR ALTER PROCEDURE [dbo].[OrganizationInviteLink_Update]
@Id UNIQUEIDENTIFIER,
@Code UNIQUEIDENTIFIER,
@OrganizationId UNIQUEIDENTIFIER,
@AllowedDomains NVARCHAR(MAX),
@EncryptedInviteKey NVARCHAR(MAX),
@EncryptedOrgKey NVARCHAR(MAX),
@CreationDate DATETIME2(7),
@RevisionDate DATETIME2(7)
AS
BEGIN
SET NOCOUNT ON
UPDATE
[dbo].[OrganizationInviteLink]
SET
[Code] = @Code,
[OrganizationId] = @OrganizationId,
[AllowedDomains] = @AllowedDomains,
[EncryptedInviteKey] = @EncryptedInviteKey,
[EncryptedOrgKey] = @EncryptedOrgKey,
[CreationDate] = @CreationDate,
[RevisionDate] = @RevisionDate
WHERE
[Id] = @Id
END
GO
CREATE OR ALTER PROCEDURE [dbo].[OrganizationInviteLink_DeleteById]
@Id UNIQUEIDENTIFIER
AS
BEGIN
SET NOCOUNT ON
DELETE FROM [dbo].[OrganizationInviteLink]
WHERE
[Id] = @Id
END
GO
CREATE OR ALTER PROCEDURE [dbo].[OrganizationInviteLink_ReadByCode]
@Code UNIQUEIDENTIFIER
AS
BEGIN
SET NOCOUNT ON
SELECT
*
FROM
[dbo].[OrganizationInviteLinkView]
WHERE
[Code] = @Code
END
GO
CREATE OR ALTER PROCEDURE [dbo].[OrganizationInviteLink_ReadByOrganizationId]
@OrganizationId UNIQUEIDENTIFIER
AS
BEGIN
SET NOCOUNT ON
SELECT
*
FROM
[dbo].[OrganizationInviteLinkView]
WHERE
[OrganizationId] = @OrganizationId
END
GO