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:
parent
f9ef519ec0
commit
c6dcac96d3
@ -6,5 +6,6 @@ namespace Bit.Core.Models.Table
|
||||
{
|
||||
public Guid CipherId { get; set; }
|
||||
public Guid FolderId { get; set; }
|
||||
public Guid UserId { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -223,7 +223,8 @@ namespace Bit.Core.Services
|
||||
folderCiphers.Add(new FolderCipher
|
||||
{
|
||||
FolderId = folder.Id,
|
||||
CipherId = cipher.Id
|
||||
CipherId = cipher.Id,
|
||||
UserId = folder.UserId
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -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
|
@ -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
|
Loading…
Reference in New Issue
Block a user