Pandatech.AuditTrail
0.0.6
See the version list below for details.
dotnet add package Pandatech.AuditTrail --version 0.0.6
NuGet\Install-Package Pandatech.AuditTrail -Version 0.0.6
<PackageReference Include="Pandatech.AuditTrail" Version="0.0.6" />
paket add Pandatech.AuditTrail --version 0.0.6
#r "nuget: Pandatech.AuditTrail, 0.0.6"
// Install Pandatech.AuditTrail as a Cake Addin #addin nuget:?package=Pandatech.AuditTrail&version=0.0.6 // Install Pandatech.AuditTrail as a Cake Tool #tool nuget:?package=Pandatech.AuditTrail&version=0.0.6
Pandatech.***
Introduction
Pandatech.AuditTrail is a tool meticulously crafted to gather vital entity data from the change tracker post DbContext SaveChanges operation.
Features
Audits necessary entities for logging or preserving modified property data. Offers a convenient fluent configuration to specify tracked entities with ease.
Installation
Install the package via NuGet Package Manager or use the following command:
Install-Package Pandatech.AuditTrail
Configuration
- Implement the
IAuditTrailConsumer
interface. To be able to retrive modified entities data after save operation.
public class AuditTrailConsumer<TPermission>() : IAuditTrailConsumer<TPermission>
{
public Task ConsumeAsync(IEnumerable<AuditTrailCommanModel<TPermission>> entities, CancellationToken cancellationToken = default)
{
}
}
- Add required services.
builder.Services.AddAuditTrailFromAssembly(typeof(AssemblyReference).Assembly);
builder.Services.AddScoped<IAuditTrailService<PermissionType?>, AuditTrailService<PermissionType?>>();
builder.Services.AddScoped<IAuditTrailConsumer<PermissionType?>, AuditTrailConsumer<PermissionType?>>();
//Optional only for properties that encrypted to byte[] and require Decryption.
builder.Services.AddScoped<IAuditTrailDecryption, AuditTrailDecryption>();
services.AddSingleton<AuditTrailSaveInterceptor<PermissionType?>>();
services.AddSingleton<AuditTrailDbTransactionInterceptor<PermissionType?>>();
services.AddDbContextPool<PostgresContext>((sp, options) =>
{
var auditSaveInterceptor = sp.GetRequiredService<AuditTrailSaveInterceptor<PermissionType?>>();
var auditDbTransactionInterceptor = sp.GetRequiredService<AuditTrailDbTransactionInterceptor<PermissionType?>>();
options.UseNpgsql(connectionString)
.AddInterceptors(auditSaveInterceptor)
.AddInterceptors(auditDbTransactionInterceptor);
});
Usage
Create a rule derived from EntityRule
.
public class UserRule : EntityRule<UserEntity, PermissionType?>
{
public UserRule(ISomeService someService)
{
SetPermission(PermissionType.Users_Read);
RuleFor(s => s.PasswordHash).Ignore();
RuleFor(s => s.Status).ChangeName("UserStatus");
}
}
You can create your own rules and modify properties as needed. Custom rule example:
public class ChangeNamePropertyRule<TEntity, TProperty> : PropertyRule<TEntity, TProperty>
{
private readonly string _changeName;
public override NameValue ExecuteRule(string name, object value)
{
return new NameValue(_changeName, value);
}
public ChangeNamePropertyRule(string name)
{
_changeName = name;
}
}
public static class RuleExtensions
{
public static IRuleBulder<T, TPermission, TProperty?> ChangeName<T, TPermission, TProperty>(this IRuleBulder<T, TPermission, TProperty> ruleBuilder, string name)
where T : class
{
var rule = new ChangeNamePropertyRule<T, TProperty?>(name);
return ruleBuilder.SetRule(rule!)!;
}
}
Limitations
Only numeric entity IDs are assigned during SaveChanges. Composite keys are not supported.
License
Pandatech.*** is licensed under the MIT License.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.EntityFrameworkCore.Relational (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.2.8 | 115 | 6/11/2024 |
1.2.7 | 82 | 6/11/2024 |
1.2.6 | 97 | 6/9/2024 |
1.2.5 | 114 | 5/30/2024 |
1.2.4 | 104 | 5/30/2024 |
1.2.3 | 113 | 5/29/2024 |
1.2.2 | 99 | 5/29/2024 |
1.2.1 | 90 | 5/29/2024 |
1.2.0 | 105 | 5/29/2024 |
1.1.8 | 97 | 5/28/2024 |
1.1.7 | 97 | 5/28/2024 |
1.1.6 | 109 | 5/28/2024 |
1.1.5 | 103 | 5/28/2024 |
1.1.4 | 104 | 5/27/2024 |
1.1.3 | 111 | 5/27/2024 |
1.1.2 | 102 | 5/24/2024 |
1.1.1 | 84 | 5/16/2024 |
1.1.0 | 51 | 5/16/2024 |
1.0.0 | 124 | 5/5/2024 |
0.1.5 | 110 | 5/4/2024 |
0.1.4 | 115 | 5/4/2024 |
0.1.3 | 66 | 5/2/2024 |
0.1.2 | 62 | 5/2/2024 |
0.1.1 | 58 | 5/2/2024 |
0.1.0 | 64 | 5/2/2024 |
0.0.8 | 106 | 4/30/2024 |
0.0.7 | 114 | 4/30/2024 |
0.0.6 | 92 | 4/29/2024 |
0.0.5 | 94 | 4/29/2024 |
0.0.4 | 101 | 4/29/2024 |
0.0.3 | 104 | 4/28/2024 |
0.0.2 | 103 | 4/27/2024 |
0.0.1 | 90 | 4/26/2024 |
Added package