From 6649c29a8bf6a2d136b09b07cde9609e6dc322de Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Tue, 12 Dec 2017 15:04:14 -0500 Subject: [PATCH] event fixes --- .../Repositories/SqlServer/EventRepository.cs | 25 ++++++++++--------- .../Services/Implementations/EventService.cs | 3 ++- .../dbo/Stored Procedures/Event_Create.sql | 3 +++ src/Sql/dbo/Tables/Event.sql | 5 ++-- util/Setup/DbScripts/2017-12-12_00_Events.sql | 8 ++++-- 5 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/Core/Repositories/SqlServer/EventRepository.cs b/src/Core/Repositories/SqlServer/EventRepository.cs index 8b1ffc903b..a581233535 100644 --- a/src/Core/Repositories/SqlServer/EventRepository.cs +++ b/src/Core/Repositories/SqlServer/EventRepository.cs @@ -68,22 +68,22 @@ namespace Bit.Core.Repositories.SqlServer eventsTable.Columns.Add(idColumn); var typeColumn = new DataColumn(nameof(e.Type), typeof(int)); eventsTable.Columns.Add(typeColumn); - var dateColumn = new DataColumn(nameof(e.Date), e.Date.GetType()); - eventsTable.Columns.Add(dateColumn); var userIdColumn = new DataColumn(nameof(e.UserId), typeof(Guid)); eventsTable.Columns.Add(userIdColumn); var organizationIdColumn = new DataColumn(nameof(e.OrganizationId), typeof(Guid)); eventsTable.Columns.Add(organizationIdColumn); var cipherIdColumn = new DataColumn(nameof(e.CipherId), typeof(Guid)); eventsTable.Columns.Add(cipherIdColumn); - var groupIdColumn = new DataColumn(nameof(e.GroupId), typeof(Guid)); - eventsTable.Columns.Add(groupIdColumn); var collectionIdColumn = new DataColumn(nameof(e.CollectionId), typeof(Guid)); eventsTable.Columns.Add(collectionIdColumn); + var groupIdColumn = new DataColumn(nameof(e.GroupId), typeof(Guid)); + eventsTable.Columns.Add(groupIdColumn); var actingUserIdColumn = new DataColumn(nameof(e.ActingUserId), typeof(Guid)); eventsTable.Columns.Add(actingUserIdColumn); var organizationUserIdColumn = new DataColumn(nameof(e.OrganizationUserId), typeof(Guid)); eventsTable.Columns.Add(organizationUserIdColumn); + var dateColumn = new DataColumn(nameof(e.Date), e.Date.GetType()); + eventsTable.Columns.Add(dateColumn); var keys = new DataColumn[1]; keys[0] = idColumn; @@ -96,15 +96,16 @@ namespace Bit.Core.Repositories.SqlServer var row = eventsTable.NewRow(); row[idColumn] = ev.Id; - row[typeColumn] = ev.Type; + row[typeColumn] = (int)ev.Type; row[dateColumn] = ev.Date; - row[userIdColumn] = ev.UserId; - row[organizationIdColumn] = ev.OrganizationId; - row[cipherIdColumn] = ev.CipherId; - row[groupIdColumn] = ev.GroupId; - row[collectionIdColumn] = ev.CollectionId; - row[actingUserIdColumn] = ev.ActingUserId; - row[organizationUserIdColumn] = ev.OrganizationUserId; + row[userIdColumn] = ev.UserId.HasValue ? (object)ev.UserId.Value : DBNull.Value; + row[organizationIdColumn] = ev.OrganizationId.HasValue ? (object)ev.OrganizationId.Value : DBNull.Value; + row[cipherIdColumn] = ev.CipherId.HasValue ? (object)ev.CipherId.Value : DBNull.Value; + row[groupIdColumn] = ev.GroupId.HasValue ? (object)ev.GroupId.Value : DBNull.Value; + row[collectionIdColumn] = ev.CollectionId.HasValue ? (object)ev.CollectionId.Value : DBNull.Value; + row[actingUserIdColumn] = ev.ActingUserId.HasValue ? (object)ev.ActingUserId.Value : DBNull.Value; + row[organizationUserIdColumn] = ev.OrganizationUserId.HasValue ? + (object)ev.OrganizationUserId.Value : DBNull.Value; eventsTable.Rows.Add(row); } diff --git a/src/Core/Services/Implementations/EventService.cs b/src/Core/Services/Implementations/EventService.cs index 19ad855757..f604d2ef61 100644 --- a/src/Core/Services/Implementations/EventService.cs +++ b/src/Core/Services/Implementations/EventService.cs @@ -78,7 +78,8 @@ namespace Bit.Core.Services public async Task LogCipherEventAsync(Cipher cipher, EventType type) { - if(!cipher.OrganizationId.HasValue && (!_currentContext?.UserId.HasValue ?? true)) + // Only logging organization cipher events for now. + if(!cipher.OrganizationId.HasValue || (!_currentContext?.UserId.HasValue ?? true)) { return; } diff --git a/src/Sql/dbo/Stored Procedures/Event_Create.sql b/src/Sql/dbo/Stored Procedures/Event_Create.sql index e5ddeeb688..413e5416e1 100644 --- a/src/Sql/dbo/Stored Procedures/Event_Create.sql +++ b/src/Sql/dbo/Stored Procedures/Event_Create.sql @@ -7,6 +7,7 @@ @CollectionId UNIQUEIDENTIFIER, @GroupId UNIQUEIDENTIFIER, @OrganizationUserId UNIQUEIDENTIFIER, + @ActingUserId UNIQUEIDENTIFIER, @Date DATETIME2(7) AS BEGIN @@ -22,6 +23,7 @@ BEGIN [CollectionId], [GroupId], [OrganizationUserId], + [ActingUserId], [Date] ) VALUES @@ -34,6 +36,7 @@ BEGIN @CollectionId, @GroupId, @OrganizationUserId, + @ActingUserId, @Date ) END diff --git a/src/Sql/dbo/Tables/Event.sql b/src/Sql/dbo/Tables/Event.sql index b5448dee8c..9623d2afd9 100644 --- a/src/Sql/dbo/Tables/Event.sql +++ b/src/Sql/dbo/Tables/Event.sql @@ -7,12 +7,13 @@ [CollectionId] UNIQUEIDENTIFIER NULL, [GroupId] UNIQUEIDENTIFIER NULL, [OrganizationUserId] UNIQUEIDENTIFIER NULL, + [ActingUserId] UNIQUEIDENTIFIER NULL, [Date] DATETIME2 (7) NOT NULL, CONSTRAINT [PK_Event] PRIMARY KEY CLUSTERED ([Id] ASC) ); GO -CREATE UNIQUE NONCLUSTERED INDEX [IX_Event_Date] - ON [dbo].[Event]([Date] ASC); +CREATE NONCLUSTERED INDEX [IX_Event_DateOrganizationIdUserId] + ON [dbo].[Event]([Date] ASC, [OrganizationId] ASC, [UserId] ASC); diff --git a/util/Setup/DbScripts/2017-12-12_00_Events.sql b/util/Setup/DbScripts/2017-12-12_00_Events.sql index 5684663609..c1b1e2997b 100644 --- a/util/Setup/DbScripts/2017-12-12_00_Events.sql +++ b/util/Setup/DbScripts/2017-12-12_00_Events.sql @@ -9,12 +9,13 @@ BEGIN [CollectionId] UNIQUEIDENTIFIER NULL, [GroupId] UNIQUEIDENTIFIER NULL, [OrganizationUserId] UNIQUEIDENTIFIER NULL, + [ActingUserId] UNIQUEIDENTIFIER NULL, [Date] DATETIME2 (7) NOT NULL, CONSTRAINT [PK_Event] PRIMARY KEY CLUSTERED ([Id] ASC) ); - CREATE UNIQUE NONCLUSTERED INDEX [IX_Event_Date] - ON [dbo].[Event]([Date] ASC); + CREATE NONCLUSTERED INDEX [IX_Event_DateOrganizationIdUserId] + ON [dbo].[Event]([Date] ASC, [OrganizationId] ASC, [UserId] ASC); END GO @@ -33,6 +34,7 @@ CREATE PROCEDURE [dbo].[Event_Create] @CollectionId UNIQUEIDENTIFIER, @GroupId UNIQUEIDENTIFIER, @OrganizationUserId UNIQUEIDENTIFIER, + @ActingUserId UNIQUEIDENTIFIER, @Date DATETIME2(7) AS BEGIN @@ -48,6 +50,7 @@ BEGIN [CollectionId], [GroupId], [OrganizationUserId], + [ActingUserId], [Date] ) VALUES @@ -60,6 +63,7 @@ BEGIN @CollectionId, @GroupId, @OrganizationUserId, + @ActingUserId, @Date ) END