From 6d0434d5e1e49aabbc7290306e5947b9bdd61836 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Tue, 10 Jul 2018 09:32:06 +0300 Subject: [PATCH] Audit log refactored. --- .../Volo/Abp/AuditLogging/AuditLog.cs | 8 +++--- .../Volo/Abp/AuditLogging/AuditLogAction.cs | 25 +++++++++++-------- .../Volo/Abp/AuditLogging/EntityChange.cs | 17 +++++++------ ...LoggingtDbContextModelBuilderExtensions.cs | 12 ++++----- .../EfCoreAuditLogRepository.cs | 1 - ...itLogging.EntityFrameworkCore.Tests.csproj | 2 +- .../Volo.Abp.AuditLogging.TestBase.csproj | 2 +- .../Volo/Abp/AuditLogging/AuditingTestData.cs | 16 ------------ .../AuditLogging/AuditingTestDataBuilder.cs | 8 ++---- .../Volo.Abp.AuditLogging.Tests.csproj | 2 +- .../AuditLogging/AuditStore_Basic_Tests.cs | 4 +-- 11 files changed, 39 insertions(+), 58 deletions(-) delete mode 100644 modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditingTestData.cs diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLog.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLog.cs index 780e46050e..7b80e0f695 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLog.cs +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLog.cs @@ -4,6 +4,7 @@ using System.Linq; using Volo.Abp.Auditing; using Volo.Abp.Data; using Volo.Abp.Domain.Entities; +using Volo.Abp.Guids; using Volo.Abp.MultiTenancy; namespace Volo.Abp.AuditLogging @@ -41,8 +42,9 @@ namespace Volo.Abp.AuditLogging } - public AuditLog(AuditLogInfo auditInfo) + public AuditLog(IGuidGenerator guidGenerator, AuditLogInfo auditInfo) { + Id = guidGenerator.Create(); TenantId = auditInfo.TenantId; UserId = auditInfo.UserId; ExecutionTime = auditInfo.ExecutionTime; @@ -53,8 +55,8 @@ namespace Volo.Abp.AuditLogging ImpersonatorUserId = auditInfo.ImpersonatorUserId; ImpersonatorTenantId = auditInfo.ImpersonatorTenantId; ExtraProperties = auditInfo.ExtraProperties; - EntityChanges = auditInfo.EntityChanges.Select(e=> new EntityChange(e)).ToList(); - Actions = auditInfo.Actions.Select(e=> new AuditLogAction(e)).ToList(); + EntityChanges = auditInfo.EntityChanges.Select(e => new EntityChange(e)).ToList(); + Actions = auditInfo.Actions.Select(e => new AuditLogAction(guidGenerator.Create(), Id, e)).ToList(); Exceptions = auditInfo.Exceptions.Select(e => e.ToString()).ToList(); } } diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLogAction.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLogAction.cs index 2a7a5604bd..d3a9baaa06 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLogAction.cs +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLogAction.cs @@ -1,39 +1,42 @@ using System; using System.Collections.Generic; -using System.Text; using Volo.Abp.Auditing; +using Volo.Abp.Data; using Volo.Abp.Domain.Entities; -using Volo.Abp.MultiTenancy; namespace Volo.Abp.AuditLogging { - public class AuditLogAction : Entity + public class AuditLogAction : Entity, IHasExtraProperties { - public virtual string ServiceName { get; set; } + public virtual Guid AuditLogId { get; protected set; } - public virtual string MethodName { get; set; } + public virtual string ServiceName { get; protected set; } - public virtual string Parameters { get; set; } + public virtual string MethodName { get; protected set; } - public virtual DateTime ExecutionTime { get; set; } + public virtual string Parameters { get; protected set; } - public virtual int ExecutionDuration { get; set; } + public virtual DateTime ExecutionTime { get; protected set; } - public virtual Dictionary ExtraProperties { get; } + public virtual int ExecutionDuration { get; protected set; } + + public virtual Dictionary ExtraProperties { get; protected set; } protected AuditLogAction() { ExtraProperties = new Dictionary(); } - public AuditLogAction(AuditLogActionInfo auditLogActionInfo) + public AuditLogAction(Guid id, Guid auditLogId, AuditLogActionInfo auditLogActionInfo) { + Id = id; + AuditLogId = auditLogId; ServiceName = auditLogActionInfo.ServiceName; MethodName = auditLogActionInfo.MethodName; Parameters = auditLogActionInfo.Parameters; ExecutionTime = auditLogActionInfo.ExecutionTime; ExecutionDuration = auditLogActionInfo.ExecutionDuration; - ExtraProperties = auditLogActionInfo.ExtraProperties; + ExtraProperties = auditLogActionInfo.ExtraProperties; //TODO: Copy, instead of assign } } } diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/EntityChange.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/EntityChange.cs index b4b1d43ba4..38baef3788 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/EntityChange.cs +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/EntityChange.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Text; using Volo.Abp.Auditing; using Volo.Abp.Domain.Entities; using Volo.Abp.MultiTenancy; @@ -9,17 +8,19 @@ namespace Volo.Abp.AuditLogging { public class EntityChange : Entity, IMultiTenant { - public virtual Guid? TenantId { get; set; } + public virtual Guid AuditLogId { get; protected set; } - public virtual DateTime ChangeTime { get; set; } + public virtual Guid? TenantId { get; protected set; } - public virtual EntityChangeType ChangeType { get; set; } + public virtual DateTime ChangeTime { get; protected set; } - public virtual string EntityId { get; set; } + public virtual EntityChangeType ChangeType { get; protected set; } - public virtual string EntityTypeFullName { get; set; } + public virtual string EntityId { get; protected set; } - public ICollection PropertyChanges { get; set; } + public virtual string EntityTypeFullName { get; protected set; } + + public ICollection PropertyChanges { get; protected set; } protected EntityChange() { @@ -33,7 +34,7 @@ namespace Volo.Abp.AuditLogging ChangeType = entityChangeInfo.ChangeType; EntityId = entityChangeInfo.EntityId; EntityTypeFullName = entityChangeInfo.EntityTypeFullName; - PropertyChanges = entityChangeInfo.PropertyChanges; + PropertyChanges = entityChangeInfo.PropertyChanges; //Copy instead of assiging } } } diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingtDbContextModelBuilderExtensions.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingtDbContextModelBuilderExtensions.cs index d0e28944a2..7e6394974e 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingtDbContextModelBuilderExtensions.cs +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingtDbContextModelBuilderExtensions.cs @@ -1,7 +1,5 @@ using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; -using Volo.Abp; -using Volo.Abp.EntityFrameworkCore.Modeling; namespace Volo.Abp.AuditLogging.EntityFrameworkCore { @@ -23,15 +21,15 @@ namespace Volo.Abp.AuditLogging.EntityFrameworkCore { b.ToTable(tablePrefix + "AuditLogs", schema); - b.Property(x => x.ClientIpAddress).HasMaxLength(AuditLogConsts.MaxClientIpAddressLength); - b.Property(x => x.ClientName).HasMaxLength(AuditLogConsts.MaxClientNameLength); + b.Property(x => x.ClientIpAddress).HasMaxLength(AuditLogConsts.MaxClientIpAddressLength).HasColumnName(nameof(AuditLog.ClientIpAddress)); + b.Property(x => x.ClientName).HasMaxLength(AuditLogConsts.MaxClientNameLength); //TODO: Add HasColumnNames b.Property(x => x.BrowserInfo).HasMaxLength(AuditLogConsts.MaxBrowserInfoLength); b.Property(x => x.Exceptions).HasMaxLength(AuditLogConsts.MaxExceptionLength); - b.HasIndex(x => new { x.TenantId, x.UserId, x.ExecutionTime}); - b.HasOne().WithMany().HasForeignKey(x => x.EntityChanges); - b.HasOne().WithMany().HasForeignKey(x => x.Actions); + b.HasMany().WithOne().HasForeignKey(x => x.); + + b.HasIndex(x => new { x.TenantId, x.UserId, x.ExecutionTime }); }); builder.Entity(b => diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/EfCoreAuditLogRepository.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/EfCoreAuditLogRepository.cs index ead5cfec1b..38aa94e462 100644 --- a/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/EfCoreAuditLogRepository.cs +++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/EfCoreAuditLogRepository.cs @@ -10,6 +10,5 @@ namespace Volo.Abp.AuditLogging.EntityFrameworkCore : base(dbContextProvider) { } - } } diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests.csproj b/modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests.csproj index f161c9e4d8..eb5d0c717c 100644 --- a/modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests.csproj +++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests.csproj @@ -1,7 +1,7 @@  - netstandard2.0 + netcoreapp2.1 Volo.Abp.AuditLogging.EntityFrameworkCore.Tests Volo.Abp.AuditLogging.EntityFrameworkCore.Tests true diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo.Abp.AuditLogging.TestBase.csproj b/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo.Abp.AuditLogging.TestBase.csproj index 908d8ed2bf..1d028ed083 100644 --- a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo.Abp.AuditLogging.TestBase.csproj +++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo.Abp.AuditLogging.TestBase.csproj @@ -1,7 +1,7 @@  - netstandard2.0 + netcoreapp2.1 Volo.Abp.AuditLogging.TestBase Volo.Abp.AuditLogging.TestBase true diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditingTestData.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditingTestData.cs deleted file mode 100644 index 314ca30390..0000000000 --- a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditingTestData.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using Volo.Abp.DependencyInjection; - -namespace Volo.Abp.AuditLogging -{ - public class AuditingTestData : ISingletonDependency - { - public Guid UserId { get; } = Guid.NewGuid(); - - public Guid TenantId { get; } = Guid.NewGuid(); - - public Guid ImpersonatorUserId { get; } = Guid.NewGuid(); - - public Guid ImpersonatorTenantId { get; } = Guid.NewGuid(); - } -} diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditingTestDataBuilder.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditingTestDataBuilder.cs index 9b53c00850..6ee8499567 100644 --- a/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditingTestDataBuilder.cs +++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditingTestDataBuilder.cs @@ -1,18 +1,14 @@ -using System; -using System.Collections.Generic; -using Volo.Abp.DependencyInjection; +using Volo.Abp.DependencyInjection; namespace Volo.Abp.AuditLogging { public class AuditingTestDataBuilder : ITransientDependency { private readonly IAuditLogRepository _auditLogRepository; - private readonly AuditingTestData _auditingTestData; - public AuditingTestDataBuilder(IAuditLogRepository auditLogRepository, AuditingTestData auditingTestData ) + public AuditingTestDataBuilder(IAuditLogRepository auditLogRepository ) { _auditLogRepository = auditLogRepository; - _auditingTestData = auditingTestData; } public void Build() diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo.Abp.AuditLogging.Tests.csproj b/modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo.Abp.AuditLogging.Tests.csproj index a6f0862adf..18ff1e0d53 100644 --- a/modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo.Abp.AuditLogging.Tests.csproj +++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo.Abp.AuditLogging.Tests.csproj @@ -1,7 +1,7 @@  - netstandard2.0 + netcoreapp2.1 Volo.Abp.AuditLogging.Tests Volo.Abp.AuditLogging.Tests true diff --git a/modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo/Abp/AuditLogging/AuditStore_Basic_Tests.cs b/modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo/Abp/AuditLogging/AuditStore_Basic_Tests.cs index 03682dc980..709d9c60dd 100644 --- a/modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo/Abp/AuditLogging/AuditStore_Basic_Tests.cs +++ b/modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo/Abp/AuditLogging/AuditStore_Basic_Tests.cs @@ -34,9 +34,7 @@ namespace Volo.Abp.AuditLogging //Exceptions = new Exceptions("something went wrong.") }; - await Assert.ThrowsAsync( - async () => await _auditingStore.SaveAsync(auditLog) - ); + await _auditingStore.SaveAsync(auditLog); } } }