1
0
mirror of https://github.com/bitwarden/server.git synced 2024-11-25 12:45:18 +01:00
bitwarden-server/util/Migrator/DbScripts/2020-07-30_00_IdServerv4.sql

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

268 lines
5.7 KiB
MySQL
Raw Normal View History

IF EXISTS (
SELECT * FROM sys.indexes WHERE [Name] = 'IX_Grant_SubjectId_ClientId_Type'
AND object_id = OBJECT_ID('[dbo].[Grant]')
)
BEGIN
DROP INDEX [IX_Grant_SubjectId_ClientId_Type]
ON [dbo].[Grant]
END
GO
IF EXISTS (
SELECT * FROM sys.indexes WHERE [Name] = 'IX_Grant_SubjectId_SessionId_Type'
AND object_id = OBJECT_ID('[dbo].[Grant]')
)
BEGIN
DROP INDEX [IX_Grant_SubjectId_SessionId_Type]
ON [dbo].[Grant]
END
GO
IF COL_LENGTH('[dbo].[Grant]', 'SessionId') IS NULL
BEGIN
ALTER TABLE
[dbo].[Grant]
ADD
[SessionId] NVARCHAR (100) NULL
END
GO
IF COL_LENGTH('[dbo].[Grant]', 'Description') IS NULL
BEGIN
ALTER TABLE
[dbo].[Grant]
ADD
[Description] NVARCHAR (200) NULL
END
GO
IF COL_LENGTH('[dbo].[Grant]', 'ConsumedDate') IS NULL
BEGIN
ALTER TABLE
[dbo].[Grant]
ADD
[ConsumedDate] DATETIME2 (7) NULL
END
GO
ALTER TABLE
[dbo].[Grant]
ALTER COLUMN
[Type] NVARCHAR (50) NOT NULL
GO
ALTER TABLE
[dbo].[Grant]
ALTER COLUMN
[SubjectId] NVARCHAR (200) NULL
GO
ALTER TABLE
[dbo].[Grant]
ALTER COLUMN
[ClientId] NVARCHAR (200) NOT NULL
GO
IF EXISTS(SELECT * FROM sys.views WHERE [Name] = 'GrantView')
BEGIN
DROP VIEW [dbo].[GrantView]
END
GO
CREATE VIEW [dbo].[GrantView]
AS
SELECT
*
FROM
[dbo].[Grant]
GO
IF NOT EXISTS (
SELECT * FROM sys.indexes WHERE [Name] = 'IX_Grant_SubjectId_ClientId_Type'
AND object_id = OBJECT_ID('[dbo].[Grant]')
)
BEGIN
CREATE NONCLUSTERED INDEX [IX_Grant_SubjectId_ClientId_Type]
ON [dbo].[Grant]([SubjectId] ASC, [ClientId] ASC, [Type] ASC)
-- TODO WITH ONLINE
END
GO
IF NOT EXISTS (
SELECT * FROM sys.indexes WHERE [Name] = 'IX_Grant_SubjectId_SessionId_Type'
AND object_id = OBJECT_ID('[dbo].[Grant]')
)
BEGIN
CREATE NONCLUSTERED INDEX [IX_Grant_SubjectId_SessionId_Type]
ON [dbo].[Grant]([SubjectId] ASC, [SessionId] ASC, [Type] ASC)
-- TODO WITH ONLINE
END
GO
IF OBJECT_ID('[dbo].[Grant_Delete]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[Grant_Delete]
END
GO
CREATE PROCEDURE [dbo].[Grant_Delete]
@SubjectId NVARCHAR(200),
@SessionId NVARCHAR(100),
@ClientId NVARCHAR(200),
@Type NVARCHAR(50)
AS
BEGIN
SET NOCOUNT ON
DELETE
FROM
[dbo].[Grant]
WHERE
(@SubjectId IS NULL OR [SubjectId] = @SubjectId)
AND (@ClientId IS NULL OR [ClientId] = @ClientId)
AND (@SessionId IS NULL OR [SessionId] = @SessionId)
AND (@Type IS NULL OR [Type] = @Type)
END
GO
IF OBJECT_ID('[dbo].[Grant_Read]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[Grant_Read]
END
GO
CREATE PROCEDURE [dbo].[Grant_Read]
@SubjectId NVARCHAR(200),
@SessionId NVARCHAR(100),
@ClientId NVARCHAR(200),
@Type NVARCHAR(50)
AS
BEGIN
SET NOCOUNT ON
SELECT
*
FROM
[dbo].[GrantView]
WHERE
(@SubjectId IS NULL OR [SubjectId] = @SubjectId)
AND (@ClientId IS NULL OR [ClientId] = @ClientId)
AND (@SessionId IS NULL OR [SessionId] = @SessionId)
AND (@Type IS NULL OR [Type] = @Type)
END
GO
IF OBJECT_ID('[dbo].[Grant_Save]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[Grant_Save]
END
GO
CREATE PROCEDURE [dbo].[Grant_Save]
@Key NVARCHAR(200),
@Type NVARCHAR(50),
@SubjectId NVARCHAR(200),
@SessionId NVARCHAR(100),
@ClientId NVARCHAR(200),
@Description NVARCHAR(200),
@CreationDate DATETIME2,
@ExpirationDate DATETIME2,
@ConsumedDate DATETIME2,
@Data NVARCHAR(MAX)
AS
BEGIN
SET NOCOUNT ON
MERGE
[dbo].[Grant] AS [Target]
USING
(
VALUES
(
@Key,
@Type,
@SubjectId,
@SessionId,
@ClientId,
@Description,
@CreationDate,
@ExpirationDate,
@ConsumedDate,
@Data
)
) AS [Source]
(
[Key],
[Type],
[SubjectId],
[SessionId],
[ClientId],
[Description],
[CreationDate],
[ExpirationDate],
[ConsumedDate],
[Data]
)
ON
[Target].[Key] = [Source].[Key]
WHEN MATCHED THEN
UPDATE
SET
[Type] = [Source].[Type],
[SubjectId] = [Source].[SubjectId],
[SessionId] = [Source].[SessionId],
[ClientId] = [Source].[ClientId],
[Description] = [Source].[Description],
[CreationDate] = [Source].[CreationDate],
[ExpirationDate] = [Source].[ExpirationDate],
[ConsumedDate] = [Source].[ConsumedDate],
[Data] = [Source].[Data]
WHEN NOT MATCHED THEN
INSERT
(
[Key],
[Type],
[SubjectId],
[SessionId],
[ClientId],
[Description],
[CreationDate],
[ExpirationDate],
[ConsumedDate],
[Data]
)
VALUES
(
[Source].[Key],
[Source].[Type],
[Source].[SubjectId],
[Source].[SessionId],
[Source].[ClientId],
[Source].[Description],
[Source].[CreationDate],
[Source].[ExpirationDate],
[Source].[ConsumedDate],
[Source].[Data]
)
;
END
GO
IF OBJECT_ID('[dbo].[Grant_DeleteBySubjectIdClientId]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[Grant_DeleteBySubjectIdClientId]
END
GO
IF OBJECT_ID('[dbo].[Grant_DeleteBySubjectIdClientIdType]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[Grant_DeleteBySubjectIdClientIdType]
END
GO
IF OBJECT_ID('[dbo].[Grant_ReadBySubjectId]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[Grant_ReadBySubjectId]
END
GO