Package Description
$ dotnet add package Reo.Core.AutoHistoryПакет Reo.Core.AutoHistory предоставляет функциональность для реализации аудита изменений данных в приложениях. Он позволяет отслеживать операции вставки, обновления и удаления записей в базах данных, а также сохранять дополнительную информацию (например, идентификаторы пользователей, временные метки, названия сущностей). Поддерживается интеграция с MongoDB и PostgreSQL, что делает его универсальным решением для аудита в различных типах приложений.
Интерфейс, определяющий общие поля для событий аудита (например, UpdateDate, UpdateUserId, EntityName).
Классы, реализующие IAuditEventExtra для MongoDB и PostgreSQL соответственно. Добавляют специфичные поля (например,
ExternalId).
Сервисы для создания и управления событиями аудита. Используются для генерации объектов IAuditEventExtra на основе
данных из приложения.
Маппер для преобразования сущностей в объекты IAuditEventExtra, необходимый для корректного сохранения данных в базу.
Интерфейс, определяющий обязательные поля для внешних данных (например, ExternalId).
Install-Package Reo.Core.AutoHistory
dotnet add package Reo.Core.AutoHistory
Добавьте в Startup.cs или Program.cs:
services.AddAutoHistory(options =>
{
options.UseMongoDb(connectionString: "mongodb://localhost:27017", databaseName: "AuditDb");
// или
options.UsePostgreSql(connectionString: "Host=localhost;Database=AuditDb;Username=user;Password=pass");
});
Настройки можно указать в appsettings.json:
{
"AutoHistory": {
"MongoDb": {
"ConnectionString": "mongodb://localhost:27017",
"DatabaseName": "AuditDb"
},
"PostgreSql": {
"ConnectionString": "Host=localhost;Database=AuditDb;Username=user;Password=pass"
}
}
}
var auditEvent = new MongoAuditEventExtra
{
UpdateDate = DateTime.UtcNow,
UpdateUserId = Guid.NewGuid(),
EntityName = "User",
ExternalId = "12345"
};
await AuditEventExtraProvider.SaveAsync(auditEvent);
public class UserRepository
{
private readonly IAuditEventExtraProvider _auditProvider;
public UserRepository(IAuditEventExtraProvider auditProvider)
{
_auditProvider = auditProvider;
}
public async Task CreateUserAsync(User user)
{
// Логика создания пользователя
await _auditProvider.SaveAsync(new MongoAuditEventExtra
{
UpdateDate = DateTime.UtcNow,
UpdateUserId = Guid.NewGuid(),
EntityName = "User",
ExternalId = user.Id.ToString()
});
}
}
try
{
await AuditEventExtraProvider.SaveAsync(auditEvent);
}
catch (AutoHistoryDbOptionsException ex)
{
// Обработка ошибки настройки базы данных
Console.WriteLine($"Ошибка конфигурации: {ex.Message}");
}
catch (AutoHistoryExtraFieldsMappingException ex)
{
// Обработка ошибки маппинга полей
Console.WriteLine($"Ошибка маппинга: {ex.Message}");
}
MIT License
Данный пакет распространяется под лицензией MIT. Подробнее см. в файле LICENSE.