Browse Source

Audit log refactored.

pull/395/head
Halil ibrahim Kalkan 8 years ago
parent
commit
6d0434d5e1
  1. 8
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLog.cs
  2. 25
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditLogAction.cs
  3. 17
      modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/EntityChange.cs
  4. 12
      modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingtDbContextModelBuilderExtensions.cs
  5. 1
      modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore/Volo/Abp/AuditLogging/EntityFrameworkCore/EfCoreAuditLogRepository.cs
  6. 2
      modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests.csproj
  7. 2
      modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo.Abp.AuditLogging.TestBase.csproj
  8. 16
      modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditingTestData.cs
  9. 8
      modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditingTestDataBuilder.cs
  10. 2
      modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo.Abp.AuditLogging.Tests.csproj
  11. 4
      modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo/Abp/AuditLogging/AuditStore_Basic_Tests.cs

8
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();
}
}

25
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<Guid>
public class AuditLogAction : Entity<Guid>, 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<string, object> ExtraProperties { get; }
public virtual int ExecutionDuration { get; protected set; }
public virtual Dictionary<string, object> ExtraProperties { get; protected set; }
protected AuditLogAction()
{
ExtraProperties = new Dictionary<string, object>();
}
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
}
}
}

17
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<Guid>, 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<EntityPropertyChangeInfo> PropertyChanges { get; set; }
public virtual string EntityTypeFullName { get; protected set; }
public ICollection<EntityPropertyChangeInfo> 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
}
}
}

12
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<EntityChange>().WithMany().HasForeignKey(x => x.EntityChanges);
b.HasOne<AuditLogAction>().WithMany().HasForeignKey(x => x.Actions);
b.HasMany<AuditLogAction>().WithOne().HasForeignKey(x => x.);
b.HasIndex(x => new { x.TenantId, x.UserId, x.ExecutionTime });
});
builder.Entity<EntityChange>(b =>

1
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)
{
}
}
}

2
modules/audit-logging/test/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests/Volo.Abp.AuditLogging.EntityFrameworkCore.Tests.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>netcoreapp2.1</TargetFramework>
<AssemblyName>Volo.Abp.AuditLogging.EntityFrameworkCore.Tests</AssemblyName>
<PackageId>Volo.Abp.AuditLogging.EntityFrameworkCore.Tests</PackageId>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>

2
modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo.Abp.AuditLogging.TestBase.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>netcoreapp2.1</TargetFramework>
<AssemblyName>Volo.Abp.AuditLogging.TestBase</AssemblyName>
<PackageId>Volo.Abp.AuditLogging.TestBase</PackageId>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>

16
modules/audit-logging/test/Volo.Abp.AuditLogging.TestBase/Volo/Abp/AuditLogging/AuditingTestData.cs

@ -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();
}
}

8
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()

2
modules/audit-logging/test/Volo.Abp.AuditLogging.Tests/Volo.Abp.AuditLogging.Tests.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>netcoreapp2.1</TargetFramework>
<AssemblyName>Volo.Abp.AuditLogging.Tests</AssemblyName>
<PackageId>Volo.Abp.AuditLogging.Tests</PackageId>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>

4
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<AbpException>(
async () => await _auditingStore.SaveAsync(auditLog)
);
await _auditingStore.SaveAsync(auditLog);
}
}
}

Loading…
Cancel
Save