diff --git a/src/Sql/Sql.sqlproj b/src/Sql/Sql.sqlproj index 009c63fee7..3eebc0ec43 100644 --- a/src/Sql/Sql.sqlproj +++ b/src/Sql/Sql.sqlproj @@ -65,27 +65,23 @@ - - + + - - + + + + + + + + - - - - - - - - - - diff --git a/src/Sql/dbo/Stored Procedures/Folder_Create.sql b/src/Sql/dbo/Stored Procedures/Cipher_Create.sql similarity index 56% rename from src/Sql/dbo/Stored Procedures/Folder_Create.sql rename to src/Sql/dbo/Stored Procedures/Cipher_Create.sql index a3b05d19c0..569dc71e8c 100644 --- a/src/Sql/dbo/Stored Procedures/Folder_Create.sql +++ b/src/Sql/dbo/Stored Procedures/Cipher_Create.sql @@ -1,16 +1,20 @@ -CREATE PROCEDURE [dbo].[Folder_Create] +CREATE PROCEDURE [dbo].[Cipher_Create] @Id UNIQUEIDENTIFIER, @UserId UNIQUEIDENTIFIER, - @Name NVARCHAR(MAX), + @FolderId UNIQUEIDENTIFIER, + @Type TINYINT, + @Data NVARCHAR(MAX), @CreationDate DATETIME2(7), @RevisionDate DATETIME2(7) AS BEGIN - INSERT INTO [dbo].[Folder] + INSERT INTO [dbo].[Cipher] ( [Id], [UserId], - [Name], + [FolderId], + [Type], + [Data], [CreationDate], [RevisionDate] ) @@ -18,7 +22,9 @@ BEGIN ( @Id, @UserId, - @Name, + @FolderId, + @Type, + @Data, @CreationDate, @RevisionDate ) diff --git a/src/Sql/dbo/Stored Procedures/Cipher_DeleteById.sql b/src/Sql/dbo/Stored Procedures/Cipher_DeleteById.sql new file mode 100644 index 0000000000..29b81210ef --- /dev/null +++ b/src/Sql/dbo/Stored Procedures/Cipher_DeleteById.sql @@ -0,0 +1,21 @@ +CREATE PROCEDURE [dbo].[Cipher_DeleteById] + @Id UNIQUEIDENTIFIER +AS +BEGIN + BEGIN TRANSACTION Cipher_DeleteById + + UPDATE + [dbo].[Cipher] + SET + [FolderId] = NULL + WHERE + [FolderId] = @Id + + DELETE + FROM + [dbo].[Cipher] + WHERE + [Id] = @Id + + COMMIT TRANSACTION Cipher_DeleteById +END diff --git a/src/Sql/dbo/Stored Procedures/Site_ReadById.sql b/src/Sql/dbo/Stored Procedures/Cipher_ReadById.sql similarity index 57% rename from src/Sql/dbo/Stored Procedures/Site_ReadById.sql rename to src/Sql/dbo/Stored Procedures/Cipher_ReadById.sql index c585f08d4d..f098517ca4 100644 --- a/src/Sql/dbo/Stored Procedures/Site_ReadById.sql +++ b/src/Sql/dbo/Stored Procedures/Cipher_ReadById.sql @@ -1,11 +1,11 @@ -CREATE PROCEDURE [dbo].[Site_ReadById] +CREATE PROCEDURE [dbo].[Cipher_ReadById] @Id UNIQUEIDENTIFIER AS BEGIN SELECT * FROM - [dbo].[SiteView] + [dbo].[CipherView] WHERE [Id] = @Id END diff --git a/src/Sql/dbo/Stored Procedures/Cipher_ReadByUserId.sql b/src/Sql/dbo/Stored Procedures/Cipher_ReadByUserId.sql index d6f16b40b7..c9e1528750 100644 --- a/src/Sql/dbo/Stored Procedures/Cipher_ReadByUserId.sql +++ b/src/Sql/dbo/Stored Procedures/Cipher_ReadByUserId.sql @@ -5,14 +5,7 @@ BEGIN SELECT * FROM - [dbo].[FolderView] - WHERE - [UserId] = @UserId - - SELECT - * - FROM - [dbo].[SiteView] + [dbo].[CipherView] WHERE [UserId] = @UserId END diff --git a/src/Sql/dbo/Stored Procedures/Folder_Update.sql b/src/Sql/dbo/Stored Procedures/Cipher_Update.sql similarity index 56% rename from src/Sql/dbo/Stored Procedures/Folder_Update.sql rename to src/Sql/dbo/Stored Procedures/Cipher_Update.sql index 4415a93187..c2cd7d7f52 100644 --- a/src/Sql/dbo/Stored Procedures/Folder_Update.sql +++ b/src/Sql/dbo/Stored Procedures/Cipher_Update.sql @@ -1,16 +1,20 @@ -CREATE PROCEDURE [dbo].[Folder_Update] +CREATE PROCEDURE [dbo].[Cipher_Update] @Id UNIQUEIDENTIFIER, @UserId UNIQUEIDENTIFIER, - @Name NVARCHAR(MAX), + @FolderId UNIQUEIDENTIFIER, + @Type TINYINT, + @Data NVARCHAR(MAX), @CreationDate DATETIME2(7), @RevisionDate DATETIME2(7) AS BEGIN UPDATE - [dbo].[Folder] + [dbo].[Cipher] SET [UserId] = @UserId, - [Name] = @Name, + [FolderId] = @FolderId, + [Type] = @Type, + [Data] = @Data, [CreationDate] = @CreationDate, [RevisionDate] = @RevisionDate WHERE diff --git a/src/Sql/dbo/Stored Procedures/Folder_DeleteById.sql b/src/Sql/dbo/Stored Procedures/Folder_DeleteById.sql deleted file mode 100644 index 7fcc5eedda..0000000000 --- a/src/Sql/dbo/Stored Procedures/Folder_DeleteById.sql +++ /dev/null @@ -1,21 +0,0 @@ -CREATE PROCEDURE [dbo].[Folder_DeleteById] - @Id UNIQUEIDENTIFIER -AS -BEGIN - BEGIN TRANSACTION Folder_DeleteById - - UPDATE - [dbo].[Site] - SET - [FolderId] = NULL - WHERE - [FolderId] = @Id - - DELETE - FROM - [dbo].[Folder] - WHERE - [Id] = @Id - - COMMIT TRANSACTION Folder_DeleteById -END diff --git a/src/Sql/dbo/Stored Procedures/Folder_ReadById.sql b/src/Sql/dbo/Stored Procedures/Folder_ReadById.sql deleted file mode 100644 index 3c322f660c..0000000000 --- a/src/Sql/dbo/Stored Procedures/Folder_ReadById.sql +++ /dev/null @@ -1,11 +0,0 @@ -CREATE PROCEDURE [dbo].[Folder_ReadById] - @Id UNIQUEIDENTIFIER -AS -BEGIN - SELECT - * - FROM - [dbo].[FolderView] - WHERE - [Id] = @Id -END diff --git a/src/Sql/dbo/Stored Procedures/Folder_ReadByUserId.sql b/src/Sql/dbo/Stored Procedures/Folder_ReadByUserId.sql deleted file mode 100644 index 6cda77314a..0000000000 --- a/src/Sql/dbo/Stored Procedures/Folder_ReadByUserId.sql +++ /dev/null @@ -1,11 +0,0 @@ -CREATE PROCEDURE [dbo].[Folder_ReadByUserId] - @UserId UNIQUEIDENTIFIER -AS -BEGIN - SELECT - * - FROM - [dbo].[FolderView] - WHERE - [UserId] = @UserId -END diff --git a/src/Sql/dbo/Stored Procedures/History_Create.sql b/src/Sql/dbo/Stored Procedures/History_Create.sql new file mode 100644 index 0000000000..81d65673fa --- /dev/null +++ b/src/Sql/dbo/Stored Procedures/History_Create.sql @@ -0,0 +1,22 @@ +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 diff --git a/src/Sql/dbo/Stored Procedures/History_ReadById.sql b/src/Sql/dbo/Stored Procedures/History_ReadById.sql new file mode 100644 index 0000000000..48b528e63d --- /dev/null +++ b/src/Sql/dbo/Stored Procedures/History_ReadById.sql @@ -0,0 +1,11 @@ +CREATE PROCEDURE [dbo].[History_ReadById] + @Id BIGINT +AS +BEGIN + SELECT + * + FROM + [dbo].[HistoryView] + WHERE + [Id] = @Id +END diff --git a/src/Sql/dbo/Stored Procedures/Site_Create.sql b/src/Sql/dbo/Stored Procedures/Site_Create.sql deleted file mode 100644 index 82eb157ff6..0000000000 --- a/src/Sql/dbo/Stored Procedures/Site_Create.sql +++ /dev/null @@ -1,40 +0,0 @@ -CREATE PROCEDURE [dbo].[Site_Create] - @Id UNIQUEIDENTIFIER, - @UserId UNIQUEIDENTIFIER, - @FolderId UNIQUEIDENTIFIER, - @Name NVARCHAR(MAX), - @Uri NVARCHAR(MAX), - @Username NVARCHAR(MAX), - @Password NVARCHAR(MAX), - @Notes NVARCHAR(MAX), - @CreationDate DATETIME2(7), - @RevisionDate DATETIME2(7) -AS -BEGIN - INSERT INTO [dbo].[Site] - ( - [Id], - [UserId], - [FolderId], - [Name], - [Uri], - [Username], - [Password], - [Notes], - [CreationDate], - [RevisionDate] - ) - VALUES - ( - @Id, - @UserId, - @FolderId, - @Name, - @Uri, - @Username, - @Password, - @Notes, - @CreationDate, - @RevisionDate - ) -END diff --git a/src/Sql/dbo/Stored Procedures/Site_DeleteById.sql b/src/Sql/dbo/Stored Procedures/Site_DeleteById.sql deleted file mode 100644 index 097600fb17..0000000000 --- a/src/Sql/dbo/Stored Procedures/Site_DeleteById.sql +++ /dev/null @@ -1,10 +0,0 @@ -CREATE PROCEDURE [dbo].[Site_DeleteById] - @Id UNIQUEIDENTIFIER -AS -BEGIN - DELETE - FROM - [dbo].[Site] - WHERE - [Id] = @Id -END diff --git a/src/Sql/dbo/Stored Procedures/Site_ReadByUserId.sql b/src/Sql/dbo/Stored Procedures/Site_ReadByUserId.sql deleted file mode 100644 index 7b15030920..0000000000 --- a/src/Sql/dbo/Stored Procedures/Site_ReadByUserId.sql +++ /dev/null @@ -1,11 +0,0 @@ -CREATE PROCEDURE [dbo].[Site_ReadByUserId] - @UserId UNIQUEIDENTIFIER -AS -BEGIN - SELECT - * - FROM - [dbo].[SiteView] - WHERE - [UserId] = @UserId -END diff --git a/src/Sql/dbo/Stored Procedures/Site_Update.sql b/src/Sql/dbo/Stored Procedures/Site_Update.sql deleted file mode 100644 index fb9786713b..0000000000 --- a/src/Sql/dbo/Stored Procedures/Site_Update.sql +++ /dev/null @@ -1,28 +0,0 @@ -CREATE PROCEDURE [dbo].[Site_Update] - @Id UNIQUEIDENTIFIER, - @UserId UNIQUEIDENTIFIER, - @FolderId UNIQUEIDENTIFIER, - @Name NVARCHAR(MAX), - @Uri NVARCHAR(MAX), - @Username NVARCHAR(MAX), - @Password NVARCHAR(MAX), - @Notes NVARCHAR(MAX), - @CreationDate DATETIME2(7), - @RevisionDate DATETIME2(7) -AS -BEGIN - UPDATE - [dbo].[Site] - SET - [UserId] = @UserId, - [FolderId] = @FolderId, - [Name] = @Name, - [Uri] = @Uri, - [Username] = @Username, - [Password] = @Password, - [Notes] = @Notes, - [CreationDate] = @CreationDate, - [RevisionDate] = @RevisionDate - WHERE - [Id] = @Id -END diff --git a/src/Sql/dbo/Stored Procedures/User_DeleteById.sql b/src/Sql/dbo/Stored Procedures/User_DeleteById.sql index 4971ef4f22..c2d1c93f52 100644 --- a/src/Sql/dbo/Stored Procedures/User_DeleteById.sql +++ b/src/Sql/dbo/Stored Procedures/User_DeleteById.sql @@ -6,13 +6,7 @@ BEGIN DELETE FROM - [dbo].[Site] - WHERE - [UserId] = @Id - - DELETE - FROM - [dbo].[Folder] + [dbo].[Cipher] WHERE [UserId] = @Id diff --git a/src/Sql/dbo/Tables/Cipher.sql b/src/Sql/dbo/Tables/Cipher.sql new file mode 100644 index 0000000000..9e981e6878 --- /dev/null +++ b/src/Sql/dbo/Tables/Cipher.sql @@ -0,0 +1,61 @@ +CREATE TABLE [dbo].[Cipher] ( + [Id] UNIQUEIDENTIFIER NOT NULL, + [UserId] UNIQUEIDENTIFIER NOT NULL, + [FolderId] UNIQUEIDENTIFIER NULL, + [Type] TINYINT NOT NULL, + [Data] NVARCHAR (MAX) NOT NULL, + [CreationDate] DATETIME2 (7) NOT NULL, + [RevisionDate] DATETIME2 (7) NOT NULL, + CONSTRAINT [PK_Cipher] PRIMARY KEY CLUSTERED ([Id] ASC), + CONSTRAINT [FK_Cipher_Folder] FOREIGN KEY ([FolderId]) REFERENCES [dbo].[Cipher] ([Id]), + CONSTRAINT [FK_Cipher_User] FOREIGN KEY ([UserId]) REFERENCES [dbo].[User] ([Id]) +); + + +GO +CREATE NONCLUSTERED INDEX [IX_Cipher_UserId] + ON [dbo].[Cipher]([UserId] ASC); + + +GO +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 + + +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 + + +GO +CREATE TRIGGER [dbo].[Cipher_Deleted] +ON [dbo].[Cipher] AFTER DELETE +AS +BEGIN + 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 +END diff --git a/src/Sql/dbo/Tables/Folder.sql b/src/Sql/dbo/Tables/Folder.sql deleted file mode 100644 index 5b1d63d504..0000000000 --- a/src/Sql/dbo/Tables/Folder.sql +++ /dev/null @@ -1,15 +0,0 @@ -CREATE TABLE [dbo].[Folder] ( - [Id] UNIQUEIDENTIFIER NOT NULL, - [UserId] UNIQUEIDENTIFIER NOT NULL, - [Name] NVARCHAR (MAX) NOT NULL, - [CreationDate] DATETIME2 (7) NOT NULL, - [RevisionDate] DATETIME2 (7) NOT NULL, - CONSTRAINT [PK_Folder] PRIMARY KEY CLUSTERED ([Id] ASC), - CONSTRAINT [FK_Folder_User] FOREIGN KEY ([UserId]) REFERENCES [dbo].[User] ([Id]) -); - - -GO -CREATE NONCLUSTERED INDEX [IX_Folder_UserId] - ON [dbo].[Folder]([UserId] ASC); - diff --git a/src/Sql/dbo/Tables/History.sql b/src/Sql/dbo/Tables/History.sql new file mode 100644 index 0000000000..c5e994aa98 --- /dev/null +++ b/src/Sql/dbo/Tables/History.sql @@ -0,0 +1,11 @@ +CREATE TABLE [dbo].[History] ( + [Id] BIGINT IDENTITY (1, 1) NOT NULL, + [UserId] UNIQUEIDENTIFIER NOT NULL, + [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]) +); + diff --git a/src/Sql/dbo/Tables/Site.sql b/src/Sql/dbo/Tables/Site.sql deleted file mode 100644 index 7dbbf7e4bf..0000000000 --- a/src/Sql/dbo/Tables/Site.sql +++ /dev/null @@ -1,21 +0,0 @@ -CREATE TABLE [dbo].[Site] ( - [Id] UNIQUEIDENTIFIER NOT NULL, - [UserId] UNIQUEIDENTIFIER NOT NULL, - [FolderId] UNIQUEIDENTIFIER NULL, - [Name] NVARCHAR (MAX) NOT NULL, - [Uri] NVARCHAR (MAX) NULL, - [Username] NVARCHAR (MAX) NULL, - [Password] NVARCHAR (MAX) NULL, - [Notes] NVARCHAR (MAX) NULL, - [CreationDate] DATETIME2 (7) NOT NULL, - [RevisionDate] DATETIME2 (7) NOT NULL, - CONSTRAINT [PK_Site] PRIMARY KEY CLUSTERED ([Id] ASC), - CONSTRAINT [FK_Site_Folder] FOREIGN KEY ([FolderId]) REFERENCES [dbo].[Folder] ([Id]), - CONSTRAINT [FK_Site_User] FOREIGN KEY ([UserId]) REFERENCES [dbo].[User] ([Id]) -); - - -GO -CREATE NONCLUSTERED INDEX [IX_Site_UserId] - ON [dbo].[Site]([UserId] ASC); - diff --git a/src/Sql/dbo/Views/CipherView.sql b/src/Sql/dbo/Views/CipherView.sql new file mode 100644 index 0000000000..58a144318e --- /dev/null +++ b/src/Sql/dbo/Views/CipherView.sql @@ -0,0 +1,6 @@ +CREATE VIEW [dbo].[CipherView] +AS +SELECT + * +FROM + [dbo].[Cipher] diff --git a/src/Sql/dbo/Views/FolderView.sql b/src/Sql/dbo/Views/FolderView.sql deleted file mode 100644 index 4a6fc91581..0000000000 --- a/src/Sql/dbo/Views/FolderView.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE VIEW [dbo].[FolderView] -AS -SELECT - * -FROM - [dbo].[Folder] diff --git a/src/Sql/dbo/Views/HistoryView.sql b/src/Sql/dbo/Views/HistoryView.sql new file mode 100644 index 0000000000..0b0caceda6 --- /dev/null +++ b/src/Sql/dbo/Views/HistoryView.sql @@ -0,0 +1,6 @@ +CREATE VIEW [dbo].[HistoryView] +AS +SELECT + * +FROM + [dbo].[History] diff --git a/src/Sql/dbo/Views/SiteView.sql b/src/Sql/dbo/Views/SiteView.sql deleted file mode 100644 index 02cb44fd10..0000000000 --- a/src/Sql/dbo/Views/SiteView.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE VIEW [dbo].[SiteView] -AS -SELECT - * -FROM - [dbo].[Site]