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.
319 lines
7.2 KiB
319 lines
7.2 KiB
-- NotificationStatus |
|
|
|
IF OBJECT_ID('[dbo].[FK_NotificationStatus_Notification]', 'F') IS NOT NULL |
|
BEGIN |
|
ALTER TABLE [dbo].[NotificationStatus] |
|
DROP CONSTRAINT [FK_NotificationStatus_Notification] |
|
END |
|
GO |
|
|
|
ALTER TABLE [dbo].[NotificationStatus] |
|
ADD CONSTRAINT [FK_NotificationStatus_Notification] FOREIGN KEY ([NotificationId]) REFERENCES [dbo].[Notification] ([Id]) |
|
GO |
|
|
|
IF NOT EXISTS(SELECT name |
|
FROM sys.indexes |
|
WHERE name = 'IX_NotificationStatus_UserId') |
|
BEGIN |
|
CREATE NONCLUSTERED INDEX [IX_NotificationStatus_UserId] |
|
ON [dbo].[NotificationStatus] ([UserId] ASC); |
|
END |
|
GO |
|
|
|
-- Stored Procedure Organization_DeleteById |
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[Organization_DeleteById] |
|
@Id UNIQUEIDENTIFIER |
|
WITH RECOMPILE |
|
AS |
|
BEGIN |
|
SET NOCOUNT ON |
|
|
|
EXEC [dbo].[User_BumpAccountRevisionDateByOrganizationId] @Id |
|
|
|
DECLARE @BatchSize INT = 100 |
|
WHILE @BatchSize > 0 |
|
BEGIN |
|
BEGIN TRANSACTION Organization_DeleteById_Ciphers |
|
|
|
DELETE TOP(@BatchSize) |
|
FROM |
|
[dbo].[Cipher] |
|
WHERE |
|
[UserId] IS NULL |
|
AND [OrganizationId] = @Id |
|
|
|
SET @BatchSize = @@ROWCOUNT |
|
|
|
COMMIT TRANSACTION Organization_DeleteById_Ciphers |
|
END |
|
|
|
BEGIN TRANSACTION Organization_DeleteById |
|
|
|
DELETE |
|
FROM |
|
[dbo].[AuthRequest] |
|
WHERE |
|
[OrganizationId] = @Id |
|
|
|
DELETE |
|
FROM |
|
[dbo].[SsoUser] |
|
WHERE |
|
[OrganizationId] = @Id |
|
|
|
DELETE |
|
FROM |
|
[dbo].[SsoConfig] |
|
WHERE |
|
[OrganizationId] = @Id |
|
|
|
DELETE CU |
|
FROM |
|
[dbo].[CollectionUser] CU |
|
INNER JOIN |
|
[dbo].[OrganizationUser] OU ON [CU].[OrganizationUserId] = [OU].[Id] |
|
WHERE |
|
[OU].[OrganizationId] = @Id |
|
|
|
DELETE AP |
|
FROM |
|
[dbo].[AccessPolicy] AP |
|
INNER JOIN |
|
[dbo].[OrganizationUser] OU ON [AP].[OrganizationUserId] = [OU].[Id] |
|
WHERE |
|
[OU].[OrganizationId] = @Id |
|
|
|
DELETE GU |
|
FROM |
|
[dbo].[GroupUser] GU |
|
INNER JOIN |
|
[dbo].[OrganizationUser] OU ON [GU].[OrganizationUserId] = [OU].[Id] |
|
WHERE |
|
[OU].[OrganizationId] = @Id |
|
|
|
DELETE |
|
FROM |
|
[dbo].[OrganizationUser] |
|
WHERE |
|
[OrganizationId] = @Id |
|
|
|
DELETE |
|
FROM |
|
[dbo].[ProviderOrganization] |
|
WHERE |
|
[OrganizationId] = @Id |
|
|
|
EXEC [dbo].[OrganizationApiKey_OrganizationDeleted] @Id |
|
EXEC [dbo].[OrganizationConnection_OrganizationDeleted] @Id |
|
EXEC [dbo].[OrganizationSponsorship_OrganizationDeleted] @Id |
|
EXEC [dbo].[OrganizationDomain_OrganizationDeleted] @Id |
|
|
|
DELETE |
|
FROM |
|
[dbo].[Project] |
|
WHERE |
|
[OrganizationId] = @Id |
|
|
|
DELETE |
|
FROM |
|
[dbo].[Secret] |
|
WHERE |
|
[OrganizationId] = @Id |
|
|
|
DELETE AK |
|
FROM |
|
[dbo].[ApiKey] AK |
|
INNER JOIN |
|
[dbo].[ServiceAccount] SA ON [AK].[ServiceAccountId] = [SA].[Id] |
|
WHERE |
|
[SA].[OrganizationId] = @Id |
|
|
|
DELETE AP |
|
FROM |
|
[dbo].[AccessPolicy] AP |
|
INNER JOIN |
|
[dbo].[ServiceAccount] SA ON [AP].[GrantedServiceAccountId] = [SA].[Id] |
|
WHERE |
|
[SA].[OrganizationId] = @Id |
|
|
|
DELETE |
|
FROM |
|
[dbo].[ServiceAccount] |
|
WHERE |
|
[OrganizationId] = @Id |
|
|
|
-- Delete Notification Status |
|
DELETE |
|
NS |
|
FROM |
|
[dbo].[NotificationStatus] NS |
|
INNER JOIN |
|
[dbo].[Notification] N ON N.[Id] = NS.[NotificationId] |
|
WHERE |
|
N.[OrganizationId] = @Id |
|
|
|
-- Delete Notification |
|
DELETE |
|
FROM |
|
[dbo].[Notification] |
|
WHERE |
|
[OrganizationId] = @Id |
|
|
|
DELETE |
|
FROM |
|
[dbo].[Organization] |
|
WHERE |
|
[Id] = @Id |
|
|
|
COMMIT TRANSACTION Organization_DeleteById |
|
END |
|
GO |
|
|
|
-- Stored Procedure User_DeleteById |
|
|
|
CREATE OR ALTER PROCEDURE [dbo].[User_DeleteById] |
|
@Id UNIQUEIDENTIFIER |
|
WITH RECOMPILE |
|
AS |
|
BEGIN |
|
SET NOCOUNT ON |
|
DECLARE @BatchSize INT = 100 |
|
|
|
-- Delete ciphers |
|
WHILE @BatchSize > 0 |
|
BEGIN |
|
BEGIN TRANSACTION User_DeleteById_Ciphers |
|
|
|
DELETE TOP(@BatchSize) |
|
FROM |
|
[dbo].[Cipher] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
SET @BatchSize = @@ROWCOUNT |
|
|
|
COMMIT TRANSACTION User_DeleteById_Ciphers |
|
END |
|
|
|
BEGIN TRANSACTION User_DeleteById |
|
|
|
-- Delete WebAuthnCredentials |
|
DELETE |
|
FROM |
|
[dbo].[WebAuthnCredential] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Delete folders |
|
DELETE |
|
FROM |
|
[dbo].[Folder] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Delete AuthRequest, must be before Device |
|
DELETE |
|
FROM |
|
[dbo].[AuthRequest] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Delete devices |
|
DELETE |
|
FROM |
|
[dbo].[Device] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Delete collection users |
|
DELETE |
|
CU |
|
FROM |
|
[dbo].[CollectionUser] CU |
|
INNER JOIN |
|
[dbo].[OrganizationUser] OU ON OU.[Id] = CU.[OrganizationUserId] |
|
WHERE |
|
OU.[UserId] = @Id |
|
|
|
-- Delete group users |
|
DELETE |
|
GU |
|
FROM |
|
[dbo].[GroupUser] GU |
|
INNER JOIN |
|
[dbo].[OrganizationUser] OU ON OU.[Id] = GU.[OrganizationUserId] |
|
WHERE |
|
OU.[UserId] = @Id |
|
|
|
-- Delete AccessPolicy |
|
DELETE |
|
AP |
|
FROM |
|
[dbo].[AccessPolicy] AP |
|
INNER JOIN |
|
[dbo].[OrganizationUser] OU ON OU.[Id] = AP.[OrganizationUserId] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Delete organization users |
|
DELETE |
|
FROM |
|
[dbo].[OrganizationUser] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Delete provider users |
|
DELETE |
|
FROM |
|
[dbo].[ProviderUser] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Delete SSO Users |
|
DELETE |
|
FROM |
|
[dbo].[SsoUser] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Delete Emergency Accesses |
|
DELETE |
|
FROM |
|
[dbo].[EmergencyAccess] |
|
WHERE |
|
[GrantorId] = @Id |
|
OR |
|
[GranteeId] = @Id |
|
|
|
-- Delete Sends |
|
DELETE |
|
FROM |
|
[dbo].[Send] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Delete Notification Status |
|
DELETE |
|
FROM |
|
[dbo].[NotificationStatus] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Delete Notification |
|
DELETE |
|
FROM |
|
[dbo].[Notification] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Finally, delete the user |
|
DELETE |
|
FROM |
|
[dbo].[User] |
|
WHERE |
|
[Id] = @Id |
|
|
|
COMMIT TRANSACTION User_DeleteById |
|
END |
|
GO
|
|
|