From c39736c583e2274ad14c7c0798fbfa76b35bb28a Mon Sep 17 00:00:00 2001 From: Justin Baur <19896123+justindbaur@users.noreply.github.com> Date: Sun, 4 Dec 2022 21:40:20 -0500 Subject: [PATCH] Fix AccountRevisionDate (#2467) * Update AccountRevisionDate directly by userId * Have special DateTime handling on postgres --- .../Repositories/CipherRepository.cs | 2 +- .../Repositories/DatabaseContext.cs | 22 ++++++++++++++----- .../Repositories/DatabaseContextExtensions.cs | 11 +--------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/Infrastructure.EntityFramework/Repositories/CipherRepository.cs b/src/Infrastructure.EntityFramework/Repositories/CipherRepository.cs index 01377e8fff..0f0f3018c7 100644 --- a/src/Infrastructure.EntityFramework/Repositories/CipherRepository.cs +++ b/src/Infrastructure.EntityFramework/Repositories/CipherRepository.cs @@ -139,7 +139,7 @@ public class CipherRepository : Repository, await dbContext.BulkCopyAsync(base.DefaultBulkCopyOptions, folderEntities); var cipherEntities = Mapper.Map>(ciphers); await dbContext.BulkCopyAsync(base.DefaultBulkCopyOptions, cipherEntities); - await dbContext.UserBumpAccountRevisionDateByCipherIdAsync(ciphers); + await dbContext.UserBumpAccountRevisionDateAsync(ciphers.First().UserId.GetValueOrDefault()); await dbContext.SaveChangesAsync(); } } diff --git a/src/Infrastructure.EntityFramework/Repositories/DatabaseContext.cs b/src/Infrastructure.EntityFramework/Repositories/DatabaseContext.cs index d84a4bf7de..5068c29d9a 100644 --- a/src/Infrastructure.EntityFramework/Repositories/DatabaseContext.cs +++ b/src/Infrastructure.EntityFramework/Repositories/DatabaseContext.cs @@ -141,11 +141,11 @@ public class DatabaseContext : DbContext eOrganizationConnection.ToTable(nameof(OrganizationConnection)); eAuthRequest.ToTable(nameof(AuthRequest)); - ConfigureDateTimeUTCQueries(builder); + ConfigureDateTimeUtcQueries(builder); } // Make sure this is called after configuring all the entities as it iterates through all setup entities. - private static void ConfigureDateTimeUTCQueries(ModelBuilder builder) + private void ConfigureDateTimeUtcQueries(ModelBuilder builder) { foreach (var entityType in builder.Model.GetEntityTypes()) { @@ -157,10 +157,20 @@ public class DatabaseContext : DbContext { if (property.ClrType == typeof(DateTime) || property.ClrType == typeof(DateTime?)) { - property.SetValueConverter( - new ValueConverter( - v => v, - v => new DateTime(v.Ticks, DateTimeKind.Utc))); + if (Database.IsNpgsql()) + { + property.SetValueConverter( + new ValueConverter( + v => v, + v => v.ToUniversalTime())); + } + else + { + property.SetValueConverter( + new ValueConverter( + v => v, + v => new DateTime(v.Ticks, DateTimeKind.Utc))); + } } } } diff --git a/src/Infrastructure.EntityFramework/Repositories/DatabaseContextExtensions.cs b/src/Infrastructure.EntityFramework/Repositories/DatabaseContextExtensions.cs index bdad244899..8180ec15ec 100644 --- a/src/Infrastructure.EntityFramework/Repositories/DatabaseContextExtensions.cs +++ b/src/Infrastructure.EntityFramework/Repositories/DatabaseContextExtensions.cs @@ -1,5 +1,4 @@ -using Bit.Core.Entities; -using Bit.Core.Enums; +using Bit.Core.Enums; using Bit.Core.Enums.Provider; using Bit.Infrastructure.EntityFramework.Repositories.Queries; using Microsoft.EntityFrameworkCore; @@ -42,14 +41,6 @@ public static class DatabaseContextExtensions UpdateUserRevisionDate(users); } - public static async Task UserBumpAccountRevisionDateByCipherIdAsync(this DatabaseContext context, IEnumerable ciphers) - { - foreach (var cipher in ciphers) - { - await context.UserBumpAccountRevisionDateByCipherIdAsync(cipher.Id, cipher.OrganizationId); - } - } - public static async Task UserBumpAccountRevisionDateByCollectionIdAsync(this DatabaseContext context, Guid collectionId, Guid organizationId) { var query = from u in context.Users