diff --git a/src/Sql/Sql.sqlproj b/src/Sql/Sql.sqlproj
index 20bcbfbf2f..f1ed290433 100644
--- a/src/Sql/Sql.sqlproj
+++ b/src/Sql/Sql.sqlproj
@@ -65,22 +65,24 @@
-
-
+
+
+
+
+
+
+
+
-
+
-
-
-
-
@@ -109,10 +111,5 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Sql/dbo/Stored Procedures/CipherShare_ReadById.sql b/src/Sql/dbo/Stored Procedures/CipherShare_ReadById.sql
deleted file mode 100644
index dc841a9be9..0000000000
--- a/src/Sql/dbo/Stored Procedures/CipherShare_ReadById.sql
+++ /dev/null
@@ -1,13 +0,0 @@
-CREATE PROCEDURE [dbo].[CipherShare_ReadById]
- @Id UNIQUEIDENTIFIER
-AS
-BEGIN
- SET NOCOUNT ON
-
- SELECT
- *
- FROM
- [dbo].[CipherShareView]
- WHERE
- [Id] = @Id
-END
\ No newline at end of file
diff --git a/src/Sql/dbo/Stored Procedures/CipherShare_ReadByTypeUserId.sql b/src/Sql/dbo/Stored Procedures/CipherShare_ReadByTypeUserId.sql
deleted file mode 100644
index e77f7f15b1..0000000000
--- a/src/Sql/dbo/Stored Procedures/CipherShare_ReadByTypeUserId.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-CREATE PROCEDURE [dbo].[CipherShare_ReadByTypeUserId]
- @Type TINYINT,
- @UserId UNIQUEIDENTIFIER
-AS
-BEGIN
- SET NOCOUNT ON
-
- SELECT
- *
- FROM
- [dbo].[CipherView]
- WHERE
- [Type] = @Type
- AND [UserId] = @UserId
-END
\ No newline at end of file
diff --git a/src/Sql/dbo/Stored Procedures/CipherShare_ReadByUserId.sql b/src/Sql/dbo/Stored Procedures/CipherShare_ReadByUserId.sql
deleted file mode 100644
index 77be9d1f4b..0000000000
--- a/src/Sql/dbo/Stored Procedures/CipherShare_ReadByUserId.sql
+++ /dev/null
@@ -1,14 +0,0 @@
-CREATE PROCEDURE [dbo].[CipherShare_ReadByUserId]
- @UserId UNIQUEIDENTIFIER
-AS
-BEGIN
- SET NOCOUNT ON
-
- SELECT
- *
- FROM
- [dbo].[CipherShareView]
- WHERE
- [UserId] = @UserId
- OR [ShareUserId] = @UserId
-END
\ No newline at end of file
diff --git a/src/Sql/dbo/Stored Procedures/Cipher_Create.sql b/src/Sql/dbo/Stored Procedures/Cipher_Create.sql
index 48d5e8fe5e..4c7894909a 100644
--- a/src/Sql/dbo/Stored Procedures/Cipher_Create.sql
+++ b/src/Sql/dbo/Stored Procedures/Cipher_Create.sql
@@ -4,7 +4,6 @@
@FolderId UNIQUEIDENTIFIER,
@Type TINYINT,
@Favorite BIT,
- @Key NVARCHAR(MAX),
@Data NVARCHAR(MAX),
@CreationDate DATETIME2(7),
@RevisionDate DATETIME2(7)
@@ -19,7 +18,6 @@ BEGIN
[FolderId],
[Type],
[Favorite],
- [Key],
[Data],
[CreationDate],
[RevisionDate]
@@ -31,9 +29,8 @@ BEGIN
@FolderId,
@Type,
@Favorite,
- @Key,
@Data,
@CreationDate,
@RevisionDate
)
-END
+END
\ No newline at end of file
diff --git a/src/Sql/dbo/Stored Procedures/Cipher_Update.sql b/src/Sql/dbo/Stored Procedures/Cipher_Update.sql
index e8e02332e8..19190a73c6 100644
--- a/src/Sql/dbo/Stored Procedures/Cipher_Update.sql
+++ b/src/Sql/dbo/Stored Procedures/Cipher_Update.sql
@@ -4,7 +4,6 @@
@FolderId UNIQUEIDENTIFIER,
@Type TINYINT,
@Favorite BIT,
- @Key NVARCHAR(MAX),
@Data NVARCHAR(MAX),
@CreationDate DATETIME2(7),
@RevisionDate DATETIME2(7)
@@ -19,10 +18,9 @@ BEGIN
[FolderId] = @FolderId,
[Type] = @Type,
[Favorite] = @Favorite,
- [Key] = @Key,
[Data] = @Data,
[CreationDate] = @CreationDate,
[RevisionDate] = @RevisionDate
WHERE
[Id] = @Id
-END
+END
\ No newline at end of file
diff --git a/src/Sql/dbo/Stored Procedures/Share_Create.sql b/src/Sql/dbo/Stored Procedures/Share_Create.sql
deleted file mode 100644
index e5bb141fc3..0000000000
--- a/src/Sql/dbo/Stored Procedures/Share_Create.sql
+++ /dev/null
@@ -1,39 +0,0 @@
-CREATE PROCEDURE [dbo].[Share_Create]
- @Id UNIQUEIDENTIFIER,
- @UserId UNIQUEIDENTIFIER,
- @SharerUserId UNIQUEIDENTIFIER,
- @CipherId UNIQUEIDENTIFIER,
- @Key NVARCHAR(MAX),
- @ReadOnly BIT,
- @Status TINYINT,
- @CreationDate DATETIME2(7),
- @RevisionDate DATETIME2(7)
-AS
-BEGIN
- SET NOCOUNT ON
-
- INSERT INTO [dbo].[Share]
- (
- [Id],
- [UserId],
- [SharerUserId],
- [CipherId],
- [Key],
- [ReadOnly],
- [Status],
- [CreationDate],
- [RevisionDate]
- )
- VALUES
- (
- @Id,
- @UserId,
- @SharerUserId,
- @CipherId,
- @Key,
- @ReadOnly,
- @Status,
- @CreationDate,
- @RevisionDate
- )
-END
diff --git a/src/Sql/dbo/Stored Procedures/Share_DeleteById.sql b/src/Sql/dbo/Stored Procedures/Share_DeleteById.sql
deleted file mode 100644
index 0db5201a91..0000000000
--- a/src/Sql/dbo/Stored Procedures/Share_DeleteById.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-CREATE PROCEDURE [dbo].[Share_DeleteById]
- @Id UNIQUEIDENTIFIER
-AS
-BEGIN
- SET NOCOUNT ON
-
- DELETE
- FROM
- [dbo].[Share]
- WHERE
- [Id] = @Id
-END
diff --git a/src/Sql/dbo/Stored Procedures/Share_ReadByCipherId.sql b/src/Sql/dbo/Stored Procedures/Share_ReadByCipherId.sql
deleted file mode 100644
index 6fde153a1c..0000000000
--- a/src/Sql/dbo/Stored Procedures/Share_ReadByCipherId.sql
+++ /dev/null
@@ -1,13 +0,0 @@
-CREATE PROCEDURE [dbo].[Share_ReadByCipherId]
- @CipherId UNIQUEIDENTIFIER
-AS
-BEGIN
- SET NOCOUNT ON
-
- SELECT
- *
- FROM
- [dbo].[ShareView]
- WHERE
- [CipherId] = @CipherId
-END
diff --git a/src/Sql/dbo/Stored Procedures/Share_ReadById.sql b/src/Sql/dbo/Stored Procedures/Share_ReadById.sql
deleted file mode 100644
index 77836ba16c..0000000000
--- a/src/Sql/dbo/Stored Procedures/Share_ReadById.sql
+++ /dev/null
@@ -1,13 +0,0 @@
-CREATE PROCEDURE [dbo].[Share_ReadById]
- @Id UNIQUEIDENTIFIER
-AS
-BEGIN
- SET NOCOUNT ON
-
- SELECT
- *
- FROM
- [dbo].[ShareView]
- WHERE
- [Id] = @Id
-END
diff --git a/src/Sql/dbo/Stored Procedures/Share_Update.sql b/src/Sql/dbo/Stored Procedures/Share_Update.sql
deleted file mode 100644
index d1baffc0c8..0000000000
--- a/src/Sql/dbo/Stored Procedures/Share_Update.sql
+++ /dev/null
@@ -1,28 +0,0 @@
-CREATE PROCEDURE [dbo].[Share_Update]
- @Id UNIQUEIDENTIFIER,
- @UserId UNIQUEIDENTIFIER,
- @SharerUserId UNIQUEIDENTIFIER,
- @CipherId UNIQUEIDENTIFIER,
- @Key NVARCHAR(MAX),
- @ReadOnly BIT,
- @Status TINYINT,
- @CreationDate DATETIME2(7),
- @RevisionDate DATETIME2(7)
-AS
-BEGIN
- SET NOCOUNT ON
-
- UPDATE
- [dbo].[Share]
- SET
- [UserId] = @UserId,
- [SharerUserId] = @SharerUserId,
- [CipherId] = @CipherId,
- [Key] = @Key,
- [ReadOnly] = @ReadOnly,
- [Status] = @Status,
- [CreationDate] = @CreationDate,
- [RevisionDate] = @RevisionDate
- WHERE
- [Id] = @Id
-END
diff --git a/src/Sql/dbo/Tables/Cipher.sql b/src/Sql/dbo/Tables/Cipher.sql
index 767bf879d8..719e147b09 100644
--- a/src/Sql/dbo/Tables/Cipher.sql
+++ b/src/Sql/dbo/Tables/Cipher.sql
@@ -4,7 +4,6 @@
[FolderId] UNIQUEIDENTIFIER NULL,
[Type] TINYINT NOT NULL,
[Favorite] BIT NOT NULL,
- [Key] NVARCHAR (MAX) NULL,
[Data] NVARCHAR (MAX) NOT NULL,
[CreationDate] DATETIME2 (7) NOT NULL,
[RevisionDate] DATETIME2 (7) NOT NULL,
diff --git a/src/Sql/dbo/Tables/Favorite.sql b/src/Sql/dbo/Tables/Favorite.sql
new file mode 100644
index 0000000000..4f9a8f8b6e
--- /dev/null
+++ b/src/Sql/dbo/Tables/Favorite.sql
@@ -0,0 +1,8 @@
+CREATE TABLE [dbo].[Favorite] (
+ [UserId] UNIQUEIDENTIFIER NOT NULL,
+ [CipherId] UNIQUEIDENTIFIER NOT NULL,
+ CONSTRAINT [PK_Favorite] PRIMARY KEY CLUSTERED ([UserId] ASC, [CipherId] ASC),
+ CONSTRAINT [FK_Favorite_Cipher] FOREIGN KEY ([CipherId]) REFERENCES [dbo].[Cipher] ([Id]),
+ CONSTRAINT [FK_Favorite_User] FOREIGN KEY ([UserId]) REFERENCES [dbo].[User] ([Id])
+);
+
diff --git a/src/Sql/dbo/Tables/Folder.sql b/src/Sql/dbo/Tables/Folder.sql
new file mode 100644
index 0000000000..c937987a16
--- /dev/null
+++ b/src/Sql/dbo/Tables/Folder.sql
@@ -0,0 +1,10 @@
+CREATE TABLE [dbo].[Folder] (
+ [Id] UNIQUEIDENTIFIER NOT NULL,
+ [UserId] UNIQUEIDENTIFIER NOT NULL,
+ [Name] VARCHAR (MAX) 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])
+);
+
diff --git a/src/Sql/dbo/Tables/FolderCipher.sql b/src/Sql/dbo/Tables/FolderCipher.sql
new file mode 100644
index 0000000000..2e35c95168
--- /dev/null
+++ b/src/Sql/dbo/Tables/FolderCipher.sql
@@ -0,0 +1,8 @@
+CREATE TABLE [dbo].[FolderCipher] (
+ [FolderId] UNIQUEIDENTIFIER NOT NULL,
+ [CipherId] UNIQUEIDENTIFIER NOT NULL,
+ CONSTRAINT [PK_FolderCipher] PRIMARY KEY CLUSTERED ([FolderId] ASC, [CipherId] ASC),
+ CONSTRAINT [FK_FolderCipher_Cipher] FOREIGN KEY ([CipherId]) REFERENCES [dbo].[Cipher] ([Id]),
+ CONSTRAINT [FK_FolderCipher_Folder] FOREIGN KEY ([FolderId]) REFERENCES [dbo].[Folder] ([Id])
+);
+
diff --git a/src/Sql/dbo/Tables/Organization.sql b/src/Sql/dbo/Tables/Organization.sql
new file mode 100644
index 0000000000..2f6652bf3f
--- /dev/null
+++ b/src/Sql/dbo/Tables/Organization.sql
@@ -0,0 +1,12 @@
+CREATE TABLE [dbo].[Organization] (
+ [Id] UNIQUEIDENTIFIER NOT NULL,
+ [UserId] UNIQUEIDENTIFIER NOT NULL,
+ [Name] NVARCHAR (50) NOT NULL,
+ [Plan] TINYINT NOT NULL,
+ [MaxUsers] SMALLINT NULL,
+ [CreationDate] DATETIME2 (7) NOT NULL,
+ [RevisionDate] DATETIME2 (7) NOT NULL,
+ CONSTRAINT [PK_Organization] PRIMARY KEY CLUSTERED ([Id] ASC),
+ CONSTRAINT [FK_Organization_User] FOREIGN KEY ([UserId]) REFERENCES [dbo].[User] ([Id])
+);
+
diff --git a/src/Sql/dbo/Tables/OrganizationUser.sql b/src/Sql/dbo/Tables/OrganizationUser.sql
new file mode 100644
index 0000000000..6c5c30d167
--- /dev/null
+++ b/src/Sql/dbo/Tables/OrganizationUser.sql
@@ -0,0 +1,14 @@
+CREATE TABLE [dbo].[OrganizationUser] (
+ [Id] UNIQUEIDENTIFIER NOT NULL,
+ [OrganizationId] UNIQUEIDENTIFIER NOT NULL,
+ [UserId] UNIQUEIDENTIFIER NULL,
+ [Email] NVARCHAR (50) NULL,
+ [Status] TINYINT NOT NULL,
+ [Type] TINYINT NOT NULL,
+ [CreationDate] DATETIME2 (7) NOT NULL,
+ [RevisionDate] DATETIME2 (7) NOT NULL,
+ CONSTRAINT [PK_OrganizationUser] PRIMARY KEY CLUSTERED ([Id] ASC),
+ CONSTRAINT [FK_OrganizationUser_Organization] FOREIGN KEY ([OrganizationId]) REFERENCES [dbo].[Organization] ([Id]),
+ CONSTRAINT [FK_OrganizationUser_User] FOREIGN KEY ([UserId]) REFERENCES [dbo].[User] ([Id])
+);
+
diff --git a/src/Sql/dbo/Tables/Share.sql b/src/Sql/dbo/Tables/Share.sql
deleted file mode 100644
index 4072272758..0000000000
--- a/src/Sql/dbo/Tables/Share.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-CREATE TABLE [dbo].[Share] (
- [Id] UNIQUEIDENTIFIER NOT NULL,
- [UserId] UNIQUEIDENTIFIER NOT NULL,
- [SharerUserId] UNIQUEIDENTIFIER NOT NULL,
- [CipherId] UNIQUEIDENTIFIER NOT NULL,
- [Key] VARCHAR (MAX) NULL,
- [ReadOnly] BIT NOT NULL,
- [Status] TINYINT NOT NULL,
- [CreationDate] DATETIME2 (7) NOT NULL,
- [RevisionDate] DATETIME2 (7) NOT NULL,
- CONSTRAINT [PK_Share] PRIMARY KEY CLUSTERED ([Id] ASC),
- CONSTRAINT [FK_Share_Cipher] FOREIGN KEY ([CipherId]) REFERENCES [dbo].[Cipher] ([Id]),
- CONSTRAINT [FK_Share_User] FOREIGN KEY ([UserId]) REFERENCES [dbo].[User] ([Id]),
- CONSTRAINT [FK_Share_SharerUser] FOREIGN KEY ([SharerUserId]) REFERENCES [dbo].[User] ([Id])
-);
-
-
-GO
-CREATE NONCLUSTERED INDEX [IX_Share_CipherId_Status]
- ON [dbo].[Share]([CipherId] ASC, [Status] ASC);
-
diff --git a/src/Sql/dbo/Tables/Subvault.sql b/src/Sql/dbo/Tables/Subvault.sql
new file mode 100644
index 0000000000..cf711128a7
--- /dev/null
+++ b/src/Sql/dbo/Tables/Subvault.sql
@@ -0,0 +1,8 @@
+CREATE TABLE [dbo].[Subvault] (
+ [Id] UNIQUEIDENTIFIER NOT NULL,
+ [Name] VARCHAR (MAX) NOT NULL,
+ [CreationDate] DATETIME2 (7) NOT NULL,
+ [RevisionDate] DATETIME2 (7) NOT NULL,
+ CONSTRAINT [PK_Subvault] PRIMARY KEY CLUSTERED ([Id] ASC)
+);
+
diff --git a/src/Sql/dbo/Tables/SubvaultCipher.sql b/src/Sql/dbo/Tables/SubvaultCipher.sql
new file mode 100644
index 0000000000..05951ed662
--- /dev/null
+++ b/src/Sql/dbo/Tables/SubvaultCipher.sql
@@ -0,0 +1,8 @@
+CREATE TABLE [dbo].[SubvaultCipher] (
+ [SubvaultId] UNIQUEIDENTIFIER NOT NULL,
+ [CipherId] UNIQUEIDENTIFIER NOT NULL,
+ CONSTRAINT [PK_SubvaultCipher] PRIMARY KEY CLUSTERED ([SubvaultId] ASC, [CipherId] ASC),
+ CONSTRAINT [FK_SubvaultCipher_Cipher] FOREIGN KEY ([CipherId]) REFERENCES [dbo].[Cipher] ([Id]),
+ CONSTRAINT [FK_SubvaultCipher_Subvault] FOREIGN KEY ([SubvaultId]) REFERENCES [dbo].[Subvault] ([Id])
+);
+
diff --git a/src/Sql/dbo/Tables/SubvaultUser.sql b/src/Sql/dbo/Tables/SubvaultUser.sql
new file mode 100644
index 0000000000..e5b65edc1d
--- /dev/null
+++ b/src/Sql/dbo/Tables/SubvaultUser.sql
@@ -0,0 +1,13 @@
+CREATE TABLE [dbo].[SubvaultUser] (
+ [Id] UNIQUEIDENTIFIER NOT NULL,
+ [SubvaultId] UNIQUEIDENTIFIER NOT NULL,
+ [UserId] UNIQUEIDENTIFIER NOT NULL,
+ [Key] VARCHAR (MAX) NOT NULL,
+ [CreationDate] DATETIME2 (7) NOT NULL,
+ [Admin] BIT NOT NULL,
+ [ReadOnly] BIT NOT NULL,
+ CONSTRAINT [PK_SubvaultUser] PRIMARY KEY CLUSTERED ([Id] ASC),
+ CONSTRAINT [FK_SubvaultUser_Subvault] FOREIGN KEY ([SubvaultId]) REFERENCES [dbo].[Subvault] ([Id]),
+ CONSTRAINT [FK_SubvaultUser_User] FOREIGN KEY ([UserId]) REFERENCES [dbo].[User] ([Id])
+);
+
diff --git a/src/Sql/dbo/Tables/User.sql b/src/Sql/dbo/Tables/User.sql
index 3259bd0a3a..f55c2f0cf6 100644
--- a/src/Sql/dbo/Tables/User.sql
+++ b/src/Sql/dbo/Tables/User.sql
@@ -14,8 +14,8 @@
[EquivalentDomains] NVARCHAR (MAX) NULL,
[ExcludedGlobalEquivalentDomains] NVARCHAR (MAX) NULL,
[AccountRevisionDate] DATETIME2 (7) NOT NULL,
- [PublicKey] NVARCHAR (MAX) NULL,
- [PrivateKey] NVARCHAR (MAX) NULL,
+ [PublicKey] VARCHAR (MAX) NULL,
+ [PrivateKey] VARCHAR (MAX) NULL,
[CreationDate] DATETIME2 (7) NOT NULL,
[RevisionDate] DATETIME2 (7) NOT NULL,
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED ([Id] ASC)
diff --git a/src/Sql/dbo/Views/CipherShareView.sql b/src/Sql/dbo/Views/CipherShareView.sql
deleted file mode 100644
index 86b5404388..0000000000
--- a/src/Sql/dbo/Views/CipherShareView.sql
+++ /dev/null
@@ -1,19 +0,0 @@
-CREATE VIEW [dbo].[CipherShareView]
-AS
-SELECT
- C.[Id],
- C.[UserId],
- C.[FolderId],
- C.[Type],
- C.[Favorite],
- ISNULL(S.[Key], C.[Key]) [Key],
- C.[Data],
- C.[CreationDate],
- C.[RevisionDate],
- S.[ReadOnly],
- S.[Status],
- S.[UserId] [ShareUserId]
-FROM
- [dbo].[Cipher] C
-LEFT JOIN
- [dbo].[Share] S ON C.[Id] = S.[CipherId]
\ No newline at end of file
diff --git a/src/Sql/dbo/Views/ShareView.sql b/src/Sql/dbo/Views/ShareView.sql
deleted file mode 100644
index f132539f0b..0000000000
--- a/src/Sql/dbo/Views/ShareView.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-CREATE VIEW [dbo].[ShareView]
-AS
-SELECT
- *
-FROM
- [dbo].[Share]