mirror of
https://github.com/bitwarden/server.git
synced 2025-07-03 00:52:49 -05:00
refactored data storage to use cipher table. added history table and insert triggers.
This commit is contained in:
@ -76,7 +76,7 @@
|
||||
<Build Include="dbo\Stored Procedures\Cipher_ReadById.sql" />
|
||||
<Build Include="dbo\Stored Procedures\Cipher_Update.sql" />
|
||||
<Build Include="dbo\Stored Procedures\History_ReadById.sql" />
|
||||
<Build Include="dbo\Stored Procedures\History_Create.sql" />
|
||||
<Build Include="dbo\Stored Procedures\Cipher_ReadByTypeUserId.sql" />
|
||||
<Build Include="dbo\Stored Procedures\User_ReadById.sql" />
|
||||
<Build Include="dbo\Stored Procedures\User_ReadByEmail.sql" />
|
||||
<Build Include="dbo\Stored Procedures\User_DeleteById.sql" />
|
||||
|
@ -8,6 +8,8 @@
|
||||
@RevisionDate DATETIME2(7)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
INSERT INTO [dbo].[Cipher]
|
||||
(
|
||||
[Id],
|
||||
|
@ -2,6 +2,8 @@
|
||||
@Id UNIQUEIDENTIFIER
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
BEGIN TRANSACTION Cipher_DeleteById
|
||||
|
||||
UPDATE
|
||||
|
@ -2,6 +2,8 @@
|
||||
@Id UNIQUEIDENTIFIER
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
|
15
src/Sql/dbo/Stored Procedures/Cipher_ReadByTypeUserId.sql
Normal file
15
src/Sql/dbo/Stored Procedures/Cipher_ReadByTypeUserId.sql
Normal file
@ -0,0 +1,15 @@
|
||||
CREATE PROCEDURE [dbo].[Cipher_ReadByTypeUserId]
|
||||
@Type TINYINT,
|
||||
@UserId UNIQUEIDENTIFIER
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
[dbo].[CipherView]
|
||||
WHERE
|
||||
[Type] = @Type
|
||||
AND [UserId] = @UserId
|
||||
END
|
@ -2,6 +2,8 @@
|
||||
@UserId UNIQUEIDENTIFIER
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
|
@ -8,6 +8,8 @@
|
||||
@RevisionDate DATETIME2(7)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
UPDATE
|
||||
[dbo].[Cipher]
|
||||
SET
|
||||
|
@ -1,22 +0,0 @@
|
||||
CREATE PROCEDURE [dbo].[History_Create]
|
||||
@UserId UNIQUEIDENTIFIER,
|
||||
@CipherId UNIQUEIDENTIFIER,
|
||||
@Event TINYINT,
|
||||
@Date DATETIME2(7)
|
||||
AS
|
||||
BEGIN
|
||||
INSERT INTO [dbo].[History]
|
||||
(
|
||||
[UserId],
|
||||
[CipherId],
|
||||
[Event],
|
||||
[Date]
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
@UserId,
|
||||
@CipherId,
|
||||
@Event,
|
||||
@Date
|
||||
)
|
||||
END
|
@ -2,6 +2,8 @@
|
||||
@Id BIGINT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
|
@ -14,6 +14,8 @@
|
||||
@RevisionDate DATETIME2(7)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
INSERT INTO [dbo].[User]
|
||||
(
|
||||
[Id],
|
||||
|
@ -2,6 +2,8 @@
|
||||
@Id UNIQUEIDENTIFIER
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
BEGIN TRANSACTION User_DeleteById
|
||||
|
||||
DELETE
|
||||
|
@ -2,6 +2,8 @@
|
||||
@Email NVARCHAR(50)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
|
@ -2,6 +2,8 @@
|
||||
@Id UNIQUEIDENTIFIER
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
|
@ -14,6 +14,8 @@
|
||||
@RevisionDate DATETIME2(7)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
UPDATE
|
||||
[dbo].[User]
|
||||
SET
|
||||
|
@ -7,6 +7,8 @@
|
||||
@RevisionDate DATETIME2(7)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
UPDATE
|
||||
[dbo].[User]
|
||||
SET
|
||||
|
@ -22,40 +22,75 @@ CREATE TRIGGER [dbo].[Cipher_Inserted]
|
||||
ON [dbo].[Cipher] AFTER INSERT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE @UserId UNIQUEIDENTIFIER = (SELECT [UserId] FROM INSERTED)
|
||||
DECLARE @CipherId UNIQUEIDENTIFIER = (SELECT [Id] FROM INSERTED)
|
||||
DECLARE @Date DATETIME2(7) = (SELECT [CreationDate] FROM INSERTED)
|
||||
|
||||
EXEC [dbo].[History_Create] @UserId, @CipherId, 0 /* Insert */, @Date
|
||||
END
|
||||
DECLARE @Count INT = (SELECT COUNT(1) FROM INSERTED)
|
||||
IF @Count = 0 RETURN
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
INSERT INTO [dbo].[History]
|
||||
(
|
||||
[UserId],
|
||||
[CipherId],
|
||||
[Event],
|
||||
[Date]
|
||||
)
|
||||
SELECT
|
||||
[UserId],
|
||||
[Id],
|
||||
0, --Insert
|
||||
[CreationDate]
|
||||
FROM
|
||||
INSERTED
|
||||
END
|
||||
|
||||
GO
|
||||
CREATE TRIGGER [dbo].[Cipher_Updated]
|
||||
ON [dbo].[Cipher] AFTER UPDATE
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE @UserId UNIQUEIDENTIFIER = (SELECT [UserId] FROM INSERTED)
|
||||
DECLARE @CipherId UNIQUEIDENTIFIER = (SELECT [Id] FROM INSERTED)
|
||||
DECLARE @Date DATETIME2(7) = (SELECT [RevisionDate] FROM INSERTED)
|
||||
|
||||
EXEC [dbo].[History_Create] @UserId, @CipherId, 1 /* Update */, @Date
|
||||
END
|
||||
DECLARE @Count INT = (SELECT COUNT(1) FROM INSERTED)
|
||||
IF @Count = 0 RETURN
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
INSERT INTO [dbo].[History]
|
||||
(
|
||||
[UserId],
|
||||
[CipherId],
|
||||
[Event],
|
||||
[Date]
|
||||
)
|
||||
SELECT
|
||||
[UserId],
|
||||
[Id],
|
||||
1, --Update
|
||||
[RevisionDate]
|
||||
FROM
|
||||
INSERTED
|
||||
END
|
||||
|
||||
GO
|
||||
CREATE TRIGGER [dbo].[Cipher_Deleted]
|
||||
ON [dbo].[Cipher] AFTER DELETE
|
||||
AS
|
||||
BEGIN
|
||||
DECLARE @Count INT = (SELECT COUNT(1) FROM DELETED)
|
||||
IF @Count = 0 RETURN
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE @UserId UNIQUEIDENTIFIER = (SELECT [UserId] FROM DELETED)
|
||||
DECLARE @CipherId UNIQUEIDENTIFIER = (SELECT [Id] FROM DELETED)
|
||||
|
||||
EXEC [dbo].[History_Create] @UserId, @CipherId, 2 /* Delete */, GETUTCDATE
|
||||
|
||||
INSERT INTO [dbo].[History]
|
||||
(
|
||||
[UserId],
|
||||
[CipherId],
|
||||
[Event],
|
||||
[Date]
|
||||
)
|
||||
SELECT
|
||||
[UserId],
|
||||
[Id],
|
||||
2, --Delete
|
||||
GETUTCDATE()
|
||||
FROM
|
||||
DELETED
|
||||
END
|
||||
|
@ -4,8 +4,6 @@
|
||||
[CipherId] UNIQUEIDENTIFIER NOT NULL,
|
||||
[Event] TINYINT NOT NULL,
|
||||
[Date] DATETIME2 (7) NOT NULL,
|
||||
CONSTRAINT [PK_CipherHistory] PRIMARY KEY CLUSTERED ([Id] ASC),
|
||||
CONSTRAINT [FK_CipherHistory_Cipher] FOREIGN KEY ([CipherId]) REFERENCES [dbo].[Cipher] ([Id]),
|
||||
CONSTRAINT [FK_CipherHistory_User] FOREIGN KEY ([UserId]) REFERENCES [dbo].[User] ([Id])
|
||||
CONSTRAINT [PK_CipherHistory] PRIMARY KEY CLUSTERED ([Id] ASC)
|
||||
);
|
||||
|
||||
|
Reference in New Issue
Block a user