1
0
mirror of https://github.com/bitwarden/server.git synced 2025-02-01 23:31:41 +01:00

query tuning. more userid denorm support

This commit is contained in:
Kyle Spearrin 2017-04-14 12:49:35 -04:00
parent f9ef519ec0
commit c6dcac96d3
5 changed files with 22 additions and 6 deletions

View File

@ -6,5 +6,6 @@ namespace Bit.Core.Models.Table
{
public Guid CipherId { get; set; }
public Guid FolderId { get; set; }
public Guid UserId { get; set; }
}
}

View File

@ -401,10 +401,13 @@ namespace Bit.Core.Repositories.SqlServer
folderCiphersTable.Columns.Add(folderIdColumn);
var cipherIdColumn = new DataColumn(nameof(f.CipherId), f.CipherId.GetType());
folderCiphersTable.Columns.Add(cipherIdColumn);
var userIdColumn = new DataColumn(nameof(f.UserId), f.UserId.GetType());
folderCiphersTable.Columns.Add(userIdColumn);
var keys = new DataColumn[2];
var keys = new DataColumn[3];
keys[0] = folderIdColumn;
keys[1] = cipherIdColumn;
keys[2] = userIdColumn;
folderCiphersTable.PrimaryKey = keys;
foreach(var folderCipher in folderCiphers)
@ -413,6 +416,7 @@ namespace Bit.Core.Repositories.SqlServer
row[folderIdColumn] = folderCipher.FolderId;
row[cipherIdColumn] = folderCipher.CipherId;
row[userIdColumn] = folderCipher.UserId;
folderCiphersTable.Rows.Add(row);
}

View File

@ -223,7 +223,8 @@ namespace Bit.Core.Services
folderCiphers.Add(new FolderCipher
{
FolderId = folder.Id,
CipherId = cipher.Id
CipherId = cipher.Id,
UserId = folder.UserId
});
}

View File

@ -20,7 +20,12 @@ BEGIN
WHERE
C.Id = @Id
AND (
(C.[UserId] IS NOT NULL AND C.[UserId] = @UserId)
OR (OU.[UserId] = @UserId AND OU.[Status] = 2 AND O.[Enabled] = 1) -- 2 = Confirmed
C.[UserId] = @UserId
OR (
C.[UserId] IS NULL
AND OU.[UserId] = @UserId
AND OU.[Status] = 2 -- 2 = Confirmed
AND O.[Enabled] = 1
)
)
END

View File

@ -20,7 +20,12 @@ BEGIN
WHERE
C.[Type] = @Type
AND (
(C.[UserId] IS NOT NULL AND C.[UserId] = @UserId)
OR (OU.[UserId] = @UserId AND OU.[Status] = 2 AND O.[Enabled] = 1) -- 2 = Confirmed
C.[UserId] = @UserId
OR (
C.[UserId] IS NULL
AND OU.[UserId] = @UserId
AND OU.[Status] = 2 -- 2 = Confirmed
AND O.[Enabled] = 1
)
)
END