Inicio
This commit is contained in:
+13
@@ -0,0 +1,13 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Rider ignored files
|
||||
/modules.xml
|
||||
/.idea.audit-logs.iml
|
||||
/contentModel.xml
|
||||
/projectSettingsUpdater.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="UserContentModel">
|
||||
<attachedFolders />
|
||||
<explicitIncludes />
|
||||
<explicitExcludes />
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "audit-logs", "audit-logs\audit-logs.csproj", "{BF5F8B5D-0756-4A5B-9913-16DD44AD97BC}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "audit-test", "audit-test\audit-test.csproj", "{053B6D24-445B-439A-AD42-80D31DC53059}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{BF5F8B5D-0756-4A5B-9913-16DD44AD97BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BF5F8B5D-0756-4A5B-9913-16DD44AD97BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BF5F8B5D-0756-4A5B-9913-16DD44AD97BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BF5F8B5D-0756-4A5B-9913-16DD44AD97BC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{053B6D24-445B-439A-AD42-80D31DC53059}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{053B6D24-445B-439A-AD42-80D31DC53059}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{053B6D24-445B-439A-AD42-80D31DC53059}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{053B6D24-445B-439A-AD42-80D31DC53059}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,19 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAsyncToSyncAdapter_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F9133a9652c40f25fd0942c8d926d35b748f04837845f3839b4e5803b5ec0_003FAsyncToSyncAdapter_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExecutionTimer_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F3b92f859131bde25d0f7a63de08963e995d1e1426e584dfd4b8e833d2d3dba_003FExecutionTimer_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMessagePumpStrategy_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fcf8ca8027fe683a234592509257dd2437ee65ccb37e6eeb99e7bbdc391d47_003FMessagePumpStrategy_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMethodBaseInvoker_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F3ad82f9910d5c82d76b445db10584a60305639dcad2533e08e6c47f85e3b6d83_003FMethodBaseInvoker_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATaskAwaitAdapter_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F3fad8e3b42a0f7ae367986c4177c844d48c22c6e8a9ebc5ec7c60ad5e677267_003FTaskAwaitAdapter_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATestInvoker_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F5e14a4e27990972fa4ae94975603bd298aaf328ee083c03b10569ee4724d57_003FTestInvoker_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=5c25c1e3_002D715f_002D443f_002D85ea_002Deb33bc1449eb/@EntryIndexedValue"><SessionState ContinuousTestingMode="0" IsActive="True" Name="AuditRecordRepositoryTests" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
|
||||
<TestAncestor>
|
||||
<TestId>NUnit3x::053B6D24-445B-439A-AD42-80D31DC53059::net8.0::audit_test.Repository.AuditRecordRepositoryTests</TestId>
|
||||
<TestId>NUnit3x::053B6D24-445B-439A-AD42-80D31DC53059::net8.0::audit_test.AuditServiceIntegrationTests</TestId>
|
||||
<TestId>NUnit3x::053B6D24-445B-439A-AD42-80D31DC53059::net8.0::audit_test.Service.AuditServiceIntegrationTests</TestId>
|
||||
<TestId>xUnit::053B6D24-445B-439A-AD42-80D31DC53059::net8.0::audit_test.Service.AuditServiceTests</TestId>
|
||||
<TestId>NUnit3x::053B6D24-445B-439A-AD42-80D31DC53059::net8.0::audit_test.Repository.AuditServiceIntegrationTests</TestId>
|
||||
</TestAncestor>
|
||||
</SessionState></s:String>
|
||||
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=e7280f2a_002D5b45_002D4bb8_002Db12f_002D674403112dab/@EntryIndexedValue"><SessionState ContinuousTestingMode="0" Name="RecordAuditAsync_ValidRecord_InsertsRecord" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
|
||||
<Project Location="/home/julian/RiderProjects/audit-logs/audit-test" Presentation="&lt;audit-test&gt;" />
|
||||
</SessionState></s:String></wpf:ResourceDictionary>
|
||||
@@ -0,0 +1,5 @@
|
||||
namespace audit_logs;
|
||||
|
||||
public class Class1
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using audit_logs.Models.AppSettings;
|
||||
using audit.Repositories;
|
||||
using audit.Repositories.Interfaces;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Options;
|
||||
using MongoDB.Driver;
|
||||
|
||||
namespace audit_logs.Infraestructure;
|
||||
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddMongoDb(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
// Leer configuración desde el archivo appsettings.json
|
||||
services.Configure<MongoDbSettings>(configuration.GetSection("MongoDbSettings"));
|
||||
|
||||
// Registrar MongoDbSettings como Singleton para ser usado en MongoRepository
|
||||
services.AddSingleton(sp =>
|
||||
{
|
||||
var options = sp.GetRequiredService<IOptions<MongoDbSettings>>().Value;
|
||||
var client = new MongoClient(options.ConnectionString);
|
||||
return client.GetDatabase(options.DatabaseName);
|
||||
});
|
||||
|
||||
// Registrar MongoRepository como servicio genérico
|
||||
services.AddScoped(typeof(IMongoRepository<>), typeof(MongoRepository<>));
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace audit_logs.Models.AppSettings
|
||||
{
|
||||
public class MongoDbSettings
|
||||
{
|
||||
public const string Database = "DatabaseSettings";
|
||||
|
||||
public string? ConnectionString { get; set; }
|
||||
public string? DatabaseName { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
namespace audit.Model;
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Bson.Serialization.Attributes;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
public class AuditRecord
|
||||
{
|
||||
[BsonId]
|
||||
public ObjectId Id { get; set; }
|
||||
|
||||
[BsonElement("entity_type")]
|
||||
public string EntityType { get; set; }
|
||||
|
||||
[BsonElement("record_id")]
|
||||
public string RecordId { get; set; }
|
||||
|
||||
[BsonElement("user_id")]
|
||||
public string UserId { get; set; }
|
||||
|
||||
[BsonElement("action_type")]
|
||||
public string ActionType { get; set; }
|
||||
|
||||
[BsonElement("action_time")]
|
||||
public DateTime ActionTime { get; set; }
|
||||
|
||||
[BsonElement("changes")]
|
||||
public List<Change> Changes { get; set; }
|
||||
|
||||
[BsonElement("reason")]
|
||||
public string Reason { get; set; }
|
||||
|
||||
public class Change
|
||||
{
|
||||
[BsonElement("field")]
|
||||
public string Field { get; set; }
|
||||
|
||||
[BsonElement("old_value")]
|
||||
public BsonValue OldValue { get; set; }
|
||||
|
||||
[BsonElement("new_value")]
|
||||
public BsonValue NewValue { get; set; }
|
||||
|
||||
[BsonElement("value_type")]
|
||||
public string ValueType { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
using audit_logs.Models.AppSettings;
|
||||
using audit.Model;
|
||||
using audit.Repositories;
|
||||
using Microsoft.Extensions.Options;
|
||||
using MongoDB.Bson;
|
||||
using audit.Repositories.Interfaces;
|
||||
using MongoDB.Driver;
|
||||
using System;
|
||||
using audit_logs.Models;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
namespace audit_logs.Repositories;
|
||||
|
||||
|
||||
|
||||
public class AuditRecordRepository : MongoRepository<AuditRecord>, IAuditRecordRepository
|
||||
{
|
||||
public AuditRecordRepository(IMongoDatabase database) : base(database)
|
||||
{
|
||||
}
|
||||
|
||||
public AuditRecordRepository(IOptions<MongoDbSettings> dbSettings) : base(dbSettings)
|
||||
{
|
||||
}
|
||||
|
||||
public override string GetCollectionName()
|
||||
{
|
||||
return "AuditRecords";
|
||||
}
|
||||
|
||||
public async Task InsertOneAsync(AuditRecord auditRecord)
|
||||
{
|
||||
await Collection.InsertOneAsync(auditRecord);
|
||||
}
|
||||
|
||||
public async Task DeleteBeforeDate(DateTime date)
|
||||
{
|
||||
var filter = Builders<AuditRecord>.Filter.Lt(ar => ar.ActionTime, date);
|
||||
//await Collection.DeleteManyAsync(filter);
|
||||
}
|
||||
|
||||
public async Task<long> InsertBatch(IEnumerable<AuditRecord> auditRecords)
|
||||
{
|
||||
try
|
||||
{
|
||||
await Collection.InsertManyAsync(auditRecords);
|
||||
return auditRecords.Count();
|
||||
}
|
||||
catch
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<List<AuditRecord>> FindAllFromOrigin(ObjectId originId)
|
||||
{
|
||||
var filter = Builders<AuditRecord>.Filter.Eq(ar => ar.RecordId, originId.ToString());
|
||||
return await Collection.Find(filter).ToListAsync();
|
||||
}
|
||||
|
||||
// Método para buscar un registro de auditoría por su ID
|
||||
public async Task<AuditRecord> FindRecordByIdAsync(ObjectId id)
|
||||
{
|
||||
var filter = Builders<AuditRecord>.Filter.Eq(ar => ar.Id, id);
|
||||
return await Collection.Find(filter).FirstOrDefaultAsync();
|
||||
}
|
||||
public async Task<List<AuditRecord>> GetAllAuditRecordsAsync()
|
||||
{
|
||||
// Retrieve all documents from the AuditRecords collection
|
||||
return await Collection.Find(new BsonDocument()).ToListAsync();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using audit.Model;
|
||||
using MongoDB.Bson;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
namespace audit.Repositories.Interfaces;
|
||||
|
||||
public interface IAuditRecordRepository : IMongoRepository<AuditRecord>
|
||||
{
|
||||
new Task InsertOneAsync(AuditRecord auditRecord);
|
||||
Task DeleteBeforeDate(DateTime date);
|
||||
Task<long> InsertBatch(IEnumerable<AuditRecord> auditRecords);
|
||||
Task<List<AuditRecord>> FindAllFromOrigin(ObjectId originId);
|
||||
Task<List<AuditRecord>> GetAllAuditRecordsAsync();
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace audit.Repositories.Interfaces;
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Driver;
|
||||
public interface IMongoRepository<T>
|
||||
{
|
||||
IMongoCollection<T> Collection { get; }
|
||||
|
||||
string GetCollectionName();
|
||||
Task InsertOneAsync(T obj);
|
||||
Task<T?> DeleteAsync(ObjectId id);
|
||||
Task UpdateOneAsync(ObjectId id, T obj);
|
||||
}
|
||||
@@ -0,0 +1,160 @@
|
||||
using audit_logs.Models.AppSettings;
|
||||
using Microsoft.Extensions.Options;
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Driver;
|
||||
using audit_logs.Utils;
|
||||
using audit.Repositories.Interfaces;
|
||||
using Serilog;
|
||||
|
||||
namespace audit.Repositories;
|
||||
|
||||
public abstract class MongoRepository<T> : IMongoRepository<T>
|
||||
{
|
||||
protected readonly IMongoDatabase _db;
|
||||
|
||||
protected MongoRepository(IOptions<MongoDbSettings> dbSettings)
|
||||
{
|
||||
_db = MongoDbHostBuilderExtension.GetMongoDB(dbSettings);
|
||||
}
|
||||
|
||||
protected MongoRepository(IMongoDatabase database)
|
||||
{
|
||||
_db = database;
|
||||
}
|
||||
|
||||
public abstract string GetCollectionName();
|
||||
|
||||
protected IMongoCollection<T>? _collection;
|
||||
public IMongoCollection<T> Collection
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_collection == null)
|
||||
{
|
||||
var collectionName = GetCollectionName();
|
||||
if(!this.CollectionExists(collectionName)) _db.CreateCollection(collectionName);
|
||||
_collection = _db.GetCollection<T>(collectionName);
|
||||
_ = CreateIndexes();
|
||||
|
||||
}
|
||||
return _collection;
|
||||
}
|
||||
set
|
||||
{
|
||||
_collection = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual Task CreateIndexes()
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public virtual async Task InsertOneAsync(T obj)
|
||||
{
|
||||
try
|
||||
{
|
||||
await Collection.InsertOneAsync(obj);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error("An error occurred: {ExMessage}", ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public virtual async Task InsertManyAsync(List<T> obj)
|
||||
{
|
||||
try
|
||||
{
|
||||
InsertManyOptions options = new() { IsOrdered = false};
|
||||
await Collection.InsertManyAsync(obj, options);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error("An error occurred: {ExMessage}", ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public async Task UpdateOneAsync(ObjectId id, T obj)
|
||||
{
|
||||
try
|
||||
{
|
||||
var filter = Builders<T>.Filter.Eq("_id", id);
|
||||
|
||||
await Collection.ReplaceOneAsync(filter, obj, new ReplaceOptions { IsUpsert = true });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error( "Error updating id: {Id}. Exception:{Ex}, stackTrace: {Trace}", id.ToString() , ex.Message, ex.StackTrace);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected async Task UpdateManyObjectIdAsync(string nameId, ObjectId id, ObjectId oldId)
|
||||
{
|
||||
try
|
||||
{
|
||||
var update = Builders<T>.Update.Set(nameId, id);
|
||||
var filter = Builders<T>.Filter.Eq(nameId, oldId);
|
||||
|
||||
await Collection.UpdateManyAsync(filter, update);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error("An error occurred: {ExMessage}", ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public async Task<T?> DeleteAsync(ObjectId id)
|
||||
{
|
||||
try
|
||||
{
|
||||
var filter = Builders<T>.Filter.Eq("_id", id);
|
||||
return await Collection.FindOneAndDeleteAsync(filter);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error("An error occurred: {ExMessage}", ex.Message);
|
||||
return default;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected async Task<T?> DeleteAsync(string id)
|
||||
{
|
||||
try
|
||||
{
|
||||
var filter = Builders<T>.Filter.Eq("_id", id);
|
||||
return await Collection.FindOneAndDeleteAsync(filter);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error("An error occurred: {ExMessage}", ex.Message);
|
||||
return default;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private bool CollectionExists(string collectionName)
|
||||
{
|
||||
try
|
||||
{
|
||||
var filter = new BsonDocument("name", collectionName);
|
||||
var options = new ListCollectionNamesOptions { Filter = filter };
|
||||
|
||||
return _db.ListCollectionNames(options).Any();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error("An error occurred: {ExMessage}", ex.Message);
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
using audit_logs.Repositories;
|
||||
using MongoDB.Driver;
|
||||
|
||||
namespace audit_logs.Services;
|
||||
using audit_logs.Utils;
|
||||
using audit.Model;
|
||||
using audit.Repositories;
|
||||
using audit.Repositories.Interfaces;
|
||||
using Serilog;
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
public class AuditService
|
||||
{
|
||||
|
||||
private readonly IAuditRecordRepository _auditLogRepository;
|
||||
|
||||
public AuditService(IAuditRecordRepository auditLogRepository)
|
||||
{
|
||||
_auditLogRepository = auditLogRepository;
|
||||
}
|
||||
|
||||
public AuditService(IMongoDatabase database)
|
||||
{
|
||||
_auditLogRepository = new AuditRecordRepository(database);
|
||||
|
||||
}
|
||||
public IAuditRecordRepository AuditLogRepository => _auditLogRepository;
|
||||
|
||||
public async Task RecordAuditAsync(string entityType, string recordId, string userId, string actionType, string reason,DateTime actionTime, List<AuditRecord.Change> changes)
|
||||
{
|
||||
if (entityType == null) throw new ArgumentNullException(nameof(entityType));
|
||||
if (recordId == null) throw new ArgumentNullException(nameof(recordId));
|
||||
if (userId == null) throw new ArgumentNullException(nameof(userId));
|
||||
if (actionType == null) throw new ArgumentNullException(nameof(actionType));
|
||||
if (changes == null) throw new ArgumentNullException(nameof(changes));
|
||||
|
||||
var auditRecord = new AuditRecord
|
||||
{
|
||||
EntityType = entityType,
|
||||
RecordId = recordId,
|
||||
UserId = userId,
|
||||
ActionType = actionType,
|
||||
ActionTime = actionTime,
|
||||
Changes = changes,
|
||||
Reason = reason
|
||||
};
|
||||
|
||||
await _auditLogRepository.InsertOneAsync(auditRecord);
|
||||
}
|
||||
|
||||
public async Task CreateAuditLogAsync(string entityType, string recordId, string userId, string actionType,string reason,DateTime actionTime,string originalJson, string modifiedJson)
|
||||
{
|
||||
JsonComparer jsonComparer = new();
|
||||
List<AuditRecord.Change> changes = jsonComparer.GetDifferences(originalJson, modifiedJson);
|
||||
RecordAuditAsync(entityType,recordId,userId,actionType,reason,actionTime,changes).Wait();
|
||||
string s = "";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
using audit.Model;
|
||||
|
||||
namespace audit_logs.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using MongoDB.Bson;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
public class JsonComparer
|
||||
{
|
||||
public List<AuditRecord.Change> GetDifferences(string originalJson, string modifiedJson)
|
||||
{
|
||||
var changes = new List<AuditRecord.Change>();
|
||||
|
||||
var originalObj = JObject.Parse(originalJson);
|
||||
var modifiedObj = JObject.Parse(modifiedJson);
|
||||
|
||||
CompareJTokens(originalObj, modifiedObj, changes, string.Empty);
|
||||
|
||||
return changes;
|
||||
}
|
||||
|
||||
private void CompareJTokens(JToken original, JToken modified, List<AuditRecord.Change> changes, string path)
|
||||
{
|
||||
foreach (var property in modified.Children<JProperty>())
|
||||
{
|
||||
var fieldPath = string.IsNullOrEmpty(path) ? property.Name : $"{path}.{property.Name}";
|
||||
var originalValue = original[property.Name];
|
||||
var modifiedValue = property.Value;
|
||||
|
||||
if (originalValue == null)
|
||||
{
|
||||
// Campo nuevo
|
||||
changes.Add(new AuditRecord.Change
|
||||
{
|
||||
Field = fieldPath,
|
||||
OldValue = BsonNull.Value,
|
||||
NewValue = ConvertToBsonValue(modifiedValue),
|
||||
ValueType = GetBsonType(modifiedValue)
|
||||
});
|
||||
}
|
||||
else if (!JToken.DeepEquals(originalValue, modifiedValue))
|
||||
{
|
||||
if (originalValue.Type == JTokenType.Object && modifiedValue.Type == JTokenType.Object)
|
||||
{
|
||||
// Comparar objetos anidados
|
||||
CompareJTokens(originalValue, modifiedValue, changes, fieldPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Campo modificado
|
||||
changes.Add(new AuditRecord.Change
|
||||
{
|
||||
Field = fieldPath,
|
||||
OldValue = ConvertToBsonValue(originalValue),
|
||||
NewValue = ConvertToBsonValue(modifiedValue),
|
||||
ValueType = GetBsonType(modifiedValue)
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Campos eliminados
|
||||
foreach (var property in original.Children<JProperty>())
|
||||
{
|
||||
var fieldPath = string.IsNullOrEmpty(path) ? property.Name : $"{path}.{property.Name}";
|
||||
if (modified[property.Name] == null)
|
||||
{
|
||||
changes.Add(new AuditRecord.Change
|
||||
{
|
||||
Field = fieldPath,
|
||||
OldValue = ConvertToBsonValue(property.Value),
|
||||
NewValue = BsonNull.Value,
|
||||
ValueType = GetBsonType(property.Value)
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private BsonValue ConvertToBsonValue(JToken token)
|
||||
{
|
||||
return token.Type switch
|
||||
{
|
||||
JTokenType.String => new BsonString(token.ToString()),
|
||||
JTokenType.Integer => new BsonInt32(token.ToObject<int>()),
|
||||
JTokenType.Float => new BsonDouble(token.ToObject<double>()),
|
||||
JTokenType.Boolean => new BsonBoolean(token.ToObject<bool>()),
|
||||
JTokenType.Date => new BsonDateTime(token.ToObject<DateTime>()),
|
||||
JTokenType.Null => BsonNull.Value,
|
||||
JTokenType.Object => BsonDocument.Parse(token.ToString()),
|
||||
JTokenType.Array => new BsonArray(token.ToObject<List<BsonValue>>()),
|
||||
_ => new BsonString(token.ToString())
|
||||
};
|
||||
}
|
||||
|
||||
private string GetBsonType(JToken token)
|
||||
{
|
||||
return token.Type switch
|
||||
{
|
||||
JTokenType.String => "string",
|
||||
JTokenType.Integer => "int",
|
||||
JTokenType.Float => "double",
|
||||
JTokenType.Boolean => "bool",
|
||||
JTokenType.Date => "date",
|
||||
JTokenType.Null => "null",
|
||||
JTokenType.Object => "object",
|
||||
JTokenType.Array => "array",
|
||||
_ => "unknown"
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
|
||||
using audit_logs.Models.AppSettings;
|
||||
using MongoDB.Driver;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Options;
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Bson.Serialization;
|
||||
using MongoDB.Bson.Serialization.Conventions;
|
||||
using MongoDB.Bson.Serialization.Options;
|
||||
using MongoDB.Bson.Serialization.Serializers;
|
||||
using MongoDB.Driver;
|
||||
|
||||
namespace audit_logs.Utils;
|
||||
|
||||
public static class MongoDbHostBuilderExtension
|
||||
{
|
||||
#region MongoDB
|
||||
private static MongoDB.Driver.MongoClient? _mongoClient;
|
||||
private static IMongoDatabase? _mongoDb;
|
||||
#endregion
|
||||
public static IHostBuilder UseMongo(this IHostBuilder hostBuilder)
|
||||
{
|
||||
ConfigureMongoDbConventions();
|
||||
|
||||
// ConfigureRegisterMapClass();
|
||||
|
||||
return hostBuilder;
|
||||
}
|
||||
public static IMongoDatabase GetMongoDB(IOptions<MongoDbSettings> dbSettings)
|
||||
{
|
||||
_mongoDb ??= ConfigureMongoDbConnection(dbSettings);
|
||||
return _mongoDb;
|
||||
}
|
||||
private static IMongoDatabase ConfigureMongoDbConnection(IOptions<MongoDbSettings> dbSettings)
|
||||
{
|
||||
var connectionString = dbSettings.Value.ConnectionString;
|
||||
|
||||
var databaseName = dbSettings.Value.DatabaseName;
|
||||
|
||||
if (string.IsNullOrEmpty(connectionString) || string.IsNullOrEmpty(databaseName))
|
||||
{
|
||||
throw new Exception("DataBase connection string and name is requiered");
|
||||
}
|
||||
|
||||
_mongoClient = new MongoDB.Driver.MongoClient(connectionString);
|
||||
|
||||
var mongoDb = _mongoClient.GetDatabase(databaseName);
|
||||
return mongoDb;
|
||||
}
|
||||
public static void ConfigureMongoDbConventions()
|
||||
{
|
||||
var _pack = new ConventionPack
|
||||
{
|
||||
new IgnoreExtraElementsConvention(true),
|
||||
new CamelCaseElementNameConvention()
|
||||
};
|
||||
|
||||
ConventionRegistry.Register(
|
||||
"Ignore Extra Elements Convention",
|
||||
_pack,
|
||||
t => true);
|
||||
|
||||
ConventionRegistry.Register(
|
||||
"Camel Case Convention",
|
||||
_pack,
|
||||
t => true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<RootNamespace>audit_logs</RootNamespace>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.0-rc.2.24473.5" />
|
||||
<PackageReference Include="MongoDB.Driver" Version="2.23.1" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="Serilog" Version="4.1.1-dev-02318" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,973 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v8.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v8.0": {
|
||||
"audit-logs/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Hosting": "9.0.0-rc.2.24473.5",
|
||||
"MongoDB.Driver": "2.23.1",
|
||||
"Newtonsoft.Json": "13.0.3",
|
||||
"Serilog": "4.1.1-dev-02318"
|
||||
},
|
||||
"runtime": {
|
||||
"audit-logs.dll": {}
|
||||
}
|
||||
},
|
||||
"AWSSDK.Core/3.7.100.14": {
|
||||
"runtime": {
|
||||
"lib/netcoreapp3.1/AWSSDK.Core.dll": {
|
||||
"assemblyVersion": "3.3.0.0",
|
||||
"fileVersion": "3.7.100.14"
|
||||
}
|
||||
}
|
||||
},
|
||||
"AWSSDK.SecurityToken/3.7.100.14": {
|
||||
"dependencies": {
|
||||
"AWSSDK.Core": "3.7.100.14"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp3.1/AWSSDK.SecurityToken.dll": {
|
||||
"assemblyVersion": "3.3.0.0",
|
||||
"fileVersion": "3.7.100.14"
|
||||
}
|
||||
}
|
||||
},
|
||||
"DnsClient/1.6.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Win32.Registry": "5.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net5.0/DnsClient.dll": {
|
||||
"assemblyVersion": "1.6.1.0",
|
||||
"fileVersion": "1.6.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Primitives": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Configuration.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Abstractions/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Primitives": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Binder/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.CommandLine/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.EnvironmentVariables/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.FileExtensions/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.FileProviders.Physical": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Primitives": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Json/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.FileExtensions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"System.Text.Json": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.UserSecrets/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.Json": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.FileProviders.Physical": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.0-rc.2.24473.5": {
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Diagnostics.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Options": "9.0.0-rc.2.24473.5",
|
||||
"System.Diagnostics.DiagnosticSource": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.FileProviders.Abstractions/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Primitives": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.FileProviders.Physical/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.FileSystemGlobbing": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Primitives": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.FileSystemGlobbing/9.0.0-rc.2.24473.5": {
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Hosting/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.Binder": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.CommandLine": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.EnvironmentVariables": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.FileExtensions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.Json": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.UserSecrets": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.DependencyInjection": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Diagnostics": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.FileProviders.Physical": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Hosting.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.Configuration": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.Console": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.Debug": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.EventLog": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.EventSource": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Options": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Hosting.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Hosting.Abstractions/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Options": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"System.Diagnostics.DiagnosticSource": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Configuration/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.Binder": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Options": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Console/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.Configuration": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Options": "9.0.0-rc.2.24473.5",
|
||||
"System.Text.Json": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Logging.Console.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Debug/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.EventLog/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Options": "9.0.0-rc.2.24473.5",
|
||||
"System.Diagnostics.EventLog": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.EventSource/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Options": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Primitives": "9.0.0-rc.2.24473.5",
|
||||
"System.Text.Json": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Options/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Primitives": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Options.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Configuration.Binder": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Options": "9.0.0-rc.2.24473.5",
|
||||
"Microsoft.Extensions.Primitives": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/9.0.0-rc.2.24473.5": {
|
||||
"runtime": {
|
||||
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/5.0.0": {},
|
||||
"Microsoft.Win32.Registry/5.0.0": {
|
||||
"dependencies": {
|
||||
"System.Security.AccessControl": "5.0.0",
|
||||
"System.Security.Principal.Windows": "5.0.0"
|
||||
}
|
||||
},
|
||||
"MongoDB.Bson/2.23.1": {
|
||||
"dependencies": {
|
||||
"System.Memory": "4.5.5",
|
||||
"System.Runtime.CompilerServices.Unsafe": "5.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/MongoDB.Bson.dll": {
|
||||
"assemblyVersion": "2.23.1.0",
|
||||
"fileVersion": "2.23.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MongoDB.Driver/2.23.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"MongoDB.Bson": "2.23.1",
|
||||
"MongoDB.Driver.Core": "2.23.1",
|
||||
"MongoDB.Libmongocrypt": "1.8.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/MongoDB.Driver.dll": {
|
||||
"assemblyVersion": "2.23.1.0",
|
||||
"fileVersion": "2.23.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MongoDB.Driver.Core/2.23.1": {
|
||||
"dependencies": {
|
||||
"AWSSDK.SecurityToken": "3.7.100.14",
|
||||
"DnsClient": "1.6.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.0-rc.2.24473.5",
|
||||
"MongoDB.Bson": "2.23.1",
|
||||
"MongoDB.Libmongocrypt": "1.8.0",
|
||||
"SharpCompress": "0.30.1",
|
||||
"Snappier": "1.0.0",
|
||||
"System.Buffers": "4.5.1",
|
||||
"ZstdSharp.Port": "0.7.3"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/MongoDB.Driver.Core.dll": {
|
||||
"assemblyVersion": "2.23.1.0",
|
||||
"fileVersion": "2.23.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MongoDB.Libmongocrypt/1.8.0": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/MongoDB.Libmongocrypt.dll": {
|
||||
"assemblyVersion": "1.8.0.0",
|
||||
"fileVersion": "1.8.0.0"
|
||||
}
|
||||
},
|
||||
"runtimeTargets": {
|
||||
"runtimes/linux/native/libmongocrypt.so": {
|
||||
"rid": "linux",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/osx/native/libmongocrypt.dylib": {
|
||||
"rid": "osx",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
},
|
||||
"runtimes/win/native/mongocrypt.dll": {
|
||||
"rid": "win",
|
||||
"assetType": "native",
|
||||
"fileVersion": "0.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Newtonsoft.Json/13.0.3": {
|
||||
"runtime": {
|
||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||
"assemblyVersion": "13.0.0.0",
|
||||
"fileVersion": "13.0.3.27908"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Serilog/4.1.1-dev-02318": {
|
||||
"runtime": {
|
||||
"lib/net8.0/Serilog.dll": {
|
||||
"assemblyVersion": "4.1.0.0",
|
||||
"fileVersion": "4.1.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SharpCompress/0.30.1": {
|
||||
"runtime": {
|
||||
"lib/net5.0/SharpCompress.dll": {
|
||||
"assemblyVersion": "0.30.1.0",
|
||||
"fileVersion": "0.30.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Snappier/1.0.0": {
|
||||
"runtime": {
|
||||
"lib/net5.0/Snappier.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Buffers/4.5.1": {},
|
||||
"System.Diagnostics.DiagnosticSource/9.0.0-rc.2.24473.5": {
|
||||
"runtime": {
|
||||
"lib/net8.0/System.Diagnostics.DiagnosticSource.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Diagnostics.EventLog/9.0.0-rc.2.24473.5": {
|
||||
"runtime": {
|
||||
"lib/net8.0/System.Diagnostics.EventLog.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
},
|
||||
"runtimeTargets": {
|
||||
"runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": {
|
||||
"rid": "win",
|
||||
"assetType": "runtime",
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
},
|
||||
"runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": {
|
||||
"rid": "win",
|
||||
"assetType": "runtime",
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.IO.Pipelines/9.0.0-rc.2.24473.5": {
|
||||
"runtime": {
|
||||
"lib/net8.0/System.IO.Pipelines.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Memory/4.5.5": {},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {},
|
||||
"System.Security.AccessControl/5.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "5.0.0",
|
||||
"System.Security.Principal.Windows": "5.0.0"
|
||||
}
|
||||
},
|
||||
"System.Security.Principal.Windows/5.0.0": {},
|
||||
"System.Text.Encodings.Web/9.0.0-rc.2.24473.5": {
|
||||
"runtime": {
|
||||
"lib/net8.0/System.Text.Encodings.Web.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
},
|
||||
"runtimeTargets": {
|
||||
"runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": {
|
||||
"rid": "browser",
|
||||
"assetType": "runtime",
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Text.Json/9.0.0-rc.2.24473.5": {
|
||||
"dependencies": {
|
||||
"System.IO.Pipelines": "9.0.0-rc.2.24473.5",
|
||||
"System.Text.Encodings.Web": "9.0.0-rc.2.24473.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/System.Text.Json.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.47305"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ZstdSharp.Port/0.7.3": {
|
||||
"runtime": {
|
||||
"lib/net7.0/ZstdSharp.dll": {
|
||||
"assemblyVersion": "0.7.3.0",
|
||||
"fileVersion": "0.7.3.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"audit-logs/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"AWSSDK.Core/3.7.100.14": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-gnEgxBlk4PFEfdPE8Lkf4+D16MZFYSaW7/o6Wwe5e035QWUkTJX0Dn4LfTCdV5QSEL/fOFxu+yCAm55eIIBgog==",
|
||||
"path": "awssdk.core/3.7.100.14",
|
||||
"hashPath": "awssdk.core.3.7.100.14.nupkg.sha512"
|
||||
},
|
||||
"AWSSDK.SecurityToken/3.7.100.14": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dGCVuVo0CFUKWW85W8YENO+aREf8sCBDjvGbnNvxJuNW4Ss+brEU9ltHhq2KfZze2VUNK1/wygbPG1bmbpyXEw==",
|
||||
"path": "awssdk.securitytoken/3.7.100.14",
|
||||
"hashPath": "awssdk.securitytoken.3.7.100.14.nupkg.sha512"
|
||||
},
|
||||
"DnsClient/1.6.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
|
||||
"path": "dnsclient/1.6.1",
|
||||
"hashPath": "dnsclient.1.6.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-0hsJlhsf0e9Q4449obn6Mmk8jZiC8d7q06U8stgnDkTvWVzTcukcRwBwSDWY7lgxqAVgqT2uumuwWABDR6j8PA==",
|
||||
"path": "microsoft.extensions.configuration/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.configuration.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Abstractions/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-rZdBuOxD0nTZVbPMaDhXEND+bkGQ2GcsVpte8JBYss0o+c0xyW8EIwnB7KUha2pzDd//n+y3ABVz2Lh1VxyKgQ==",
|
||||
"path": "microsoft.extensions.configuration.abstractions/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.configuration.abstractions.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Binder/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-5pL5ybuLS9eGzGJGSwQdgVQBbJW1H1CmdtqeoGu8W7j3z26go4F+XAeoxYoLZKkbFu4eCCSDyA/x7fATWmipEg==",
|
||||
"path": "microsoft.extensions.configuration.binder/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.configuration.binder.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.CommandLine/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-cOUp/RYj8UxVXVrt7BQcOxL9MAIrn7FIxd7ckuWypf7b54ZkiBvEJUDcb0fxgYTnBoAQYNpzY6mA6Qy91INvmA==",
|
||||
"path": "microsoft.extensions.configuration.commandline/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.configuration.commandline.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.EnvironmentVariables/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-HzZYcbu5k1QhwV/1HJigGjO7mfng+/XavSi04YX2LP2x9+ePVOWfk+kIdEOI9Y6OKuqVWTUJfT0V2PCdYj5Iug==",
|
||||
"path": "microsoft.extensions.configuration.environmentvariables/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.configuration.environmentvariables.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.FileExtensions/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-7Ta4cHIt1diQElErb79rUBeJs3M6Lg21og8NUB1MHjck2suBWH6SdgHGtYo4SXQ484F58A6KbAB8C6qbRIzFbA==",
|
||||
"path": "microsoft.extensions.configuration.fileextensions/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.configuration.fileextensions.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Json/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-UgIn1DV5JU0fuQsEsT8SQujpFDMcnICSF3gWCWyuf8Ur0sfCqqvdpmf5juIK7GC1y+HdgGA+cK6EYdZvLw2NSg==",
|
||||
"path": "microsoft.extensions.configuration.json/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.configuration.json.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.UserSecrets/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-UZz+lPgkLNkEUR4aPnKGTFR4vww65NBfXDDDzACrRT5G/tcKXFM67NJnFDqJxEwVw5vYVpvcU4mF41ckl3v/wA==",
|
||||
"path": "microsoft.extensions.configuration.usersecrets/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.configuration.usersecrets.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-FHb7uxiX/08FBBtwat7fiBdQltxst1Farux6Ifn1dfke+D8h1rcDj1ZbKzNB9SvLh1XmEXNYmoWGkTjt1mVzXg==",
|
||||
"path": "microsoft.extensions.dependencyinjection/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-T8oVF5Kz+J5IVagQAqcFFUrc/JrjaSvpACSm+t6cNolBX1S41PZVe3JLa3bxKnz0GTkUfSPPIkaekLmpAmHu3Q==",
|
||||
"path": "microsoft.extensions.dependencyinjection.abstractions/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-3imcv1HCKh8bE56ihM9e/lHZoFI4ZIllPtF/vXPjvGc+P60jPOR/z4xK+Xx1ZEZ/SPRBWd0Rg5mlLNqtg4ktXQ==",
|
||||
"path": "microsoft.extensions.diagnostics/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.diagnostics.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-eNsjF81RRsKj9tfxc8l8YOJOECN10eGtt/lIwyaYi1A089/gB+9Ut1gJOaO0ksYrLC6aohrACLdgRl17bSS6yw==",
|
||||
"path": "microsoft.extensions.diagnostics.abstractions/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.diagnostics.abstractions.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.FileProviders.Abstractions/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-mFkk+K8MGrwzRrWUYk9Zpo2pBCQBhsDNnQ+Ywvwm+dBiz0G/sXcsjSUKivSobeDdnQz6Mgn21W/IECZ+30dTvw==",
|
||||
"path": "microsoft.extensions.fileproviders.abstractions/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.fileproviders.abstractions.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.FileProviders.Physical/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-0BLIkMqZ3czT2ILLZjEY9f8MELIqSRSbcK3g7+VGStrFvuIWT2P2FmxP9VaHRf7N4zqeLjc3UjhTgvkyomAziA==",
|
||||
"path": "microsoft.extensions.fileproviders.physical/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.fileproviders.physical.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.FileSystemGlobbing/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-CIR/fnRYh/EXBXpQ+gmejcK2Mq9zNdqvF7r7uXaCaqVu+QFSf6cj74YddoB2skGEg/ZL4jCd1eNnCt5UNkmVDw==",
|
||||
"path": "microsoft.extensions.filesystemglobbing/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.filesystemglobbing.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Hosting/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Azb8HUdEWjXGhFVD0Z1eUXx7VUGIE+WZ8G6wfL2w60IuAG9CMWR8x78ULT1OQamAZaVAS/pe2wV3lKHSnkjAdg==",
|
||||
"path": "microsoft.extensions.hosting/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.hosting.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Hosting.Abstractions/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-9UG7HN1sETx7WLXNJtrF5dLqtoabU2KC9MmNXIzJlu119PSFOGAg9DxAd7xun/iA+OS+8HA/NuTaXjxFfmOTUQ==",
|
||||
"path": "microsoft.extensions.hosting.abstractions/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.hosting.abstractions.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-FZe8VCCAkkDOyek1ZlMmakDJNkA+cojDLpTtl5Pm4H5MdWS6WWGSfoDi++V1XiDUympTJ/S0iItSxfFf/M5e6w==",
|
||||
"path": "microsoft.extensions.logging/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.logging.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-GFglWb+13UaNAoIN1Pxvlm+/iBblBw0LHTu3dYPVCNTD2cQHM2SORFpb/s+QqKs0iT0SAwC27CnSsCKh3eGH6A==",
|
||||
"path": "microsoft.extensions.logging.abstractions/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.logging.abstractions.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Configuration/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-f5x/5d9IqzM25tTrJSOCnIbxp8e5QF23lKMyaajY49phfOjMBR0X/97LJgSXlYbUdDYQ76PpU0YAwofK3HiWHw==",
|
||||
"path": "microsoft.extensions.logging.configuration/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.logging.configuration.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Console/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-tdFYDx5g5Wh49esyx5eg6I+XdXevm07FHkm4Pwsr4a35Fv2AXhPlypEBsCX54MHFGopGjofIBnKBdorZaJRvDw==",
|
||||
"path": "microsoft.extensions.logging.console/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.logging.console.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Debug/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-JCoFnjiEfg3ly3wtMRxITFJK2d3jgExFbrTZbu4kBjpIb6Po2GkP92ooVcikBm1jEVDDqwJkpQZpKPToqGstNA==",
|
||||
"path": "microsoft.extensions.logging.debug/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.logging.debug.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.EventLog/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-FTkDESz6aLM99sUVPr6AtdpONcF3UvSB6QUyavnJGVNKbtBOCCknoDretY0/CVmvxkPdG9+gX1/tLUHu+ub4vA==",
|
||||
"path": "microsoft.extensions.logging.eventlog/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.logging.eventlog.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.EventSource/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-/7YIT5mDZ+b4Vu2x1nsavUpFB5zVUbndfA5CikESVF3I7mkdpQgU0bZ5Z8zZ0Gx9i4xWvagWJc2Eqy33/aCc2g==",
|
||||
"path": "microsoft.extensions.logging.eventsource/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.logging.eventsource.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Options/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-yv1/d9PHKB6W2KnyjgASAKU9siFtHQzFKcMLaGtEn95c2/j8ATKZkt+d4MbzxRY7fYtMyK7SOSMAFr3LybyWiw==",
|
||||
"path": "microsoft.extensions.options/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.options.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-KDQO0DbEcLh1ZcgB4icV6lgT6K+9d3xUWbgZWBoGlVgzv+fwnMsXqYAo7u6UfA7B1z27/+N8BaNVnnujNSn5SQ==",
|
||||
"path": "microsoft.extensions.options.configurationextensions/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.options.configurationextensions.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-gNj30XW3pWU6CqitHqR4OBUzqauunjzHe3hJBeueE1OcXBIs9C1XpnmyNVTvBUC+ENgxU06N8hnXHNu0rveIBA==",
|
||||
"path": "microsoft.extensions.primitives/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "microsoft.extensions.primitives.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
|
||||
"path": "microsoft.netcore.platforms/5.0.0",
|
||||
"hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Win32.Registry/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
|
||||
"path": "microsoft.win32.registry/5.0.0",
|
||||
"hashPath": "microsoft.win32.registry.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"MongoDB.Bson/2.23.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-IX9tycM35xK5hFwnU+rzharPJOtKYtON6E6Lp2nwOVjh40TUcS/HYToEEWZkLgqKNMCfYPK3Fz3QUCxzhkQRGA==",
|
||||
"path": "mongodb.bson/2.23.1",
|
||||
"hashPath": "mongodb.bson.2.23.1.nupkg.sha512"
|
||||
},
|
||||
"MongoDB.Driver/2.23.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-kidqCwGBuLBx2IcW4os3J6zsp9yaUWm7Sp8G08Nm2RVRSAf0cJXfsynl2wRWpHh0HgfIzzwkevP/qhfsKfu8bQ==",
|
||||
"path": "mongodb.driver/2.23.1",
|
||||
"hashPath": "mongodb.driver.2.23.1.nupkg.sha512"
|
||||
},
|
||||
"MongoDB.Driver.Core/2.23.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-K8LMdnVgT82vdbSllv8VzjPOLa9k5rLcCBd1fG45z+QGJNPWzAFW5lLgLJQ7xXuJgQIwvP1DBx6X6ecWBtox7g==",
|
||||
"path": "mongodb.driver.core/2.23.1",
|
||||
"hashPath": "mongodb.driver.core.2.23.1.nupkg.sha512"
|
||||
},
|
||||
"MongoDB.Libmongocrypt/1.8.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-fgNw8Dxpkq7mpoaAYes8cfnPRzvFIoB8oL9GPXwi3op/rONftl0WAeg4akRLcxfoVuUvuUO2wGoVBr3JzJ7Svw==",
|
||||
"path": "mongodb.libmongocrypt/1.8.0",
|
||||
"hashPath": "mongodb.libmongocrypt.1.8.0.nupkg.sha512"
|
||||
},
|
||||
"Newtonsoft.Json/13.0.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
|
||||
"path": "newtonsoft.json/13.0.3",
|
||||
"hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
|
||||
},
|
||||
"Serilog/4.1.1-dev-02318": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Es4sOzR3CoSdIUFbILbWeF8YJ2GB8l9gDbXsiJ9n/pR9Fl/BQS7dM4+18CUn6beOj33msqzZiAodVsE4LbjskA==",
|
||||
"path": "serilog/4.1.1-dev-02318",
|
||||
"hashPath": "serilog.4.1.1-dev-02318.nupkg.sha512"
|
||||
},
|
||||
"SharpCompress/0.30.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
|
||||
"path": "sharpcompress/0.30.1",
|
||||
"hashPath": "sharpcompress.0.30.1.nupkg.sha512"
|
||||
},
|
||||
"Snappier/1.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-rFtK2KEI9hIe8gtx3a0YDXdHOpedIf9wYCEYtBEmtlyiWVX3XlCNV03JrmmAi/Cdfn7dxK+k0sjjcLv4fpHnqA==",
|
||||
"path": "snappier/1.0.0",
|
||||
"hashPath": "snappier.1.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Buffers/4.5.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
|
||||
"path": "system.buffers/4.5.1",
|
||||
"hashPath": "system.buffers.4.5.1.nupkg.sha512"
|
||||
},
|
||||
"System.Diagnostics.DiagnosticSource/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-1trPm7zM4c15wMJVMV67XbYhA96wIIuBsEunorYRSrgKbFBZeG6gEGwiKy53SFJBpzq6oy+2kYckPaBzsK5p8w==",
|
||||
"path": "system.diagnostics.diagnosticsource/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "system.diagnostics.diagnosticsource.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"System.Diagnostics.EventLog/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-d37ltVHeoZ0yLGFN1igt0FyIMz5mWPPTm/gDftPcQdefQx8NrLWr3YXv7nUe5WcfQmlk4yDT5kHIIqIXxz5xgg==",
|
||||
"path": "system.diagnostics.eventlog/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "system.diagnostics.eventlog.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"System.IO.Pipelines/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-imrG8NvYH2f4Pdiu9xDUh2X7yoJgl6ginhAzuozH3HKERVf8kOOG09QrAnmgMNHLiWKsTztmE0CyzqfQs/X1IA==",
|
||||
"path": "system.io.pipelines/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "system.io.pipelines.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"System.Memory/4.5.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
|
||||
"path": "system.memory/4.5.5",
|
||||
"hashPath": "system.memory.4.5.5.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
|
||||
"path": "system.runtime.compilerservices.unsafe/5.0.0",
|
||||
"hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Security.AccessControl/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
|
||||
"path": "system.security.accesscontrol/5.0.0",
|
||||
"hashPath": "system.security.accesscontrol.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Security.Principal.Windows/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
|
||||
"path": "system.security.principal.windows/5.0.0",
|
||||
"hashPath": "system.security.principal.windows.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Text.Encodings.Web/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-nBIVPcHg6sqqiV7pWxDxldAaiHCSrAcUU84WfDkjZrrvowv8VzU55K1k7qPw76k2xMnxbfCYZv7gYX7QPuE0fw==",
|
||||
"path": "system.text.encodings.web/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "system.text.encodings.web.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"System.Text.Json/9.0.0-rc.2.24473.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-IsQCD+zBcFhteX7fUrS4cU/GvfLPy8F4oLtC9VBcF1U1qu1gZB/zlAxW8G0kqmAiXI84/gowZtcX1MjLk2QWoQ==",
|
||||
"path": "system.text.json/9.0.0-rc.2.24473.5",
|
||||
"hashPath": "system.text.json.9.0.0-rc.2.24473.5.nupkg.sha512"
|
||||
},
|
||||
"ZstdSharp.Port/0.7.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-U9Ix4l4cl58Kzz1rJzj5hoVTjmbx1qGMwzAcbv1j/d3NzrFaESIurQyg+ow4mivCgkE3S413y+U9k4WdnEIkRA==",
|
||||
"path": "zstdsharp.port/0.7.3",
|
||||
"hashPath": "zstdsharp.port.0.7.3.nupkg.sha512"
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
|
||||
@@ -0,0 +1,22 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("audit-logs")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("audit-logs")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("audit-logs")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// Generado por la clase WriteCodeFragment de MSBuild.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
a24164090c5189ed3d98c6fd44b755d09d4fc80f49c1dc6004a4095a5430c9b2
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
is_global = true
|
||||
build_property.TargetFramework = net8.0
|
||||
build_property.TargetPlatformMinVersion =
|
||||
build_property.UsingMicrosoftNETSdkWeb =
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = audit_logs
|
||||
build_property.ProjectDir = /home/julian/RiderProjects/audit-logs/audit-logs/
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
@@ -0,0 +1,8 @@
|
||||
// <auto-generated/>
|
||||
global using global::System;
|
||||
global using global::System.Collections.Generic;
|
||||
global using global::System.IO;
|
||||
global using global::System.Linq;
|
||||
global using global::System.Net.Http;
|
||||
global using global::System.Threading;
|
||||
global using global::System.Threading.Tasks;
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
e75a39033c995a4e86977602d5be864b159aee5b42c702852f65171b44b4a9b0
|
||||
@@ -0,0 +1,12 @@
|
||||
/home/julian/RiderProjects/audit-logs/audit-logs/bin/Debug/net8.0/audit-logs.deps.json
|
||||
/home/julian/RiderProjects/audit-logs/audit-logs/bin/Debug/net8.0/audit-logs.dll
|
||||
/home/julian/RiderProjects/audit-logs/audit-logs/bin/Debug/net8.0/audit-logs.pdb
|
||||
/home/julian/RiderProjects/audit-logs/audit-logs/obj/Debug/net8.0/audit-logs.csproj.AssemblyReference.cache
|
||||
/home/julian/RiderProjects/audit-logs/audit-logs/obj/Debug/net8.0/audit-logs.GeneratedMSBuildEditorConfig.editorconfig
|
||||
/home/julian/RiderProjects/audit-logs/audit-logs/obj/Debug/net8.0/audit-logs.AssemblyInfoInputs.cache
|
||||
/home/julian/RiderProjects/audit-logs/audit-logs/obj/Debug/net8.0/audit-logs.AssemblyInfo.cs
|
||||
/home/julian/RiderProjects/audit-logs/audit-logs/obj/Debug/net8.0/audit-logs.csproj.CoreCompileInputs.cache
|
||||
/home/julian/RiderProjects/audit-logs/audit-logs/obj/Debug/net8.0/audit-logs.dll
|
||||
/home/julian/RiderProjects/audit-logs/audit-logs/obj/Debug/net8.0/refint/audit-logs.dll
|
||||
/home/julian/RiderProjects/audit-logs/audit-logs/obj/Debug/net8.0/audit-logs.pdb
|
||||
/home/julian/RiderProjects/audit-logs/audit-logs/obj/Debug/net8.0/ref/audit-logs.dll
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"/home/julian/RiderProjects/audit-logs/audit-logs/audit-logs.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"/home/julian/RiderProjects/audit-logs/audit-logs/audit-logs.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/home/julian/RiderProjects/audit-logs/audit-logs/audit-logs.csproj",
|
||||
"projectName": "audit-logs",
|
||||
"projectPath": "/home/julian/RiderProjects/audit-logs/audit-logs/audit-logs.csproj",
|
||||
"packagesPath": "/home/julian/.nuget/packages/",
|
||||
"outputPath": "/home/julian/RiderProjects/audit-logs/audit-logs/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"/home/julian/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net8.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net8.0": {
|
||||
"targetAlias": "net8.0",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Hosting": {
|
||||
"target": "Package",
|
||||
"version": "[9.0.0-rc.2.24473.5, )"
|
||||
},
|
||||
"MongoDB.Driver": {
|
||||
"target": "Package",
|
||||
"version": "[2.23.1, )"
|
||||
},
|
||||
"Newtonsoft.Json": {
|
||||
"target": "Package",
|
||||
"version": "[13.0.3, )"
|
||||
},
|
||||
"Serilog": {
|
||||
"target": "Package",
|
||||
"version": "[4.1.1-dev-02318, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/home/julian/.dotnet/sdk/8.0.401/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/julian/.nuget/packages/</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/julian/.nuget/packages/</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.10.1</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="/home/julian/.nuget/packages/" />
|
||||
</ItemGroup>
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets/9.0.0-rc.2.24473.5/buildTransitive/net8.0/Microsoft.Extensions.Configuration.UserSecrets.props" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets/9.0.0-rc.2.24473.5/buildTransitive/net8.0/Microsoft.Extensions.Configuration.UserSecrets.props')" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<PkgAWSSDK_Core Condition=" '$(PkgAWSSDK_Core)' == '' ">/home/julian/.nuget/packages/awssdk.core/3.7.100.14</PkgAWSSDK_Core>
|
||||
<PkgAWSSDK_SecurityToken Condition=" '$(PkgAWSSDK_SecurityToken)' == '' ">/home/julian/.nuget/packages/awssdk.securitytoken/3.7.100.14</PkgAWSSDK_SecurityToken>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Import Project="$(NuGetPackageRoot)system.text.json/9.0.0-rc.2.24473.5/buildTransitive/net8.0/System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json/9.0.0-rc.2.24473.5/buildTransitive/net8.0/System.Text.Json.targets')" />
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/9.0.0-rc.2.24473.5/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/9.0.0-rc.2.24473.5/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets')" />
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options/9.0.0-rc.2.24473.5/buildTransitive/net8.0/Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options/9.0.0-rc.2.24473.5/buildTransitive/net8.0/Microsoft.Extensions.Options.targets')" />
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.binder/9.0.0-rc.2.24473.5/buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.binder/9.0.0-rc.2.24473.5/buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets')" />
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets/9.0.0-rc.2.24473.5/buildTransitive/net8.0/Microsoft.Extensions.Configuration.UserSecrets.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.usersecrets/9.0.0-rc.2.24473.5/buildTransitive/net8.0/Microsoft.Extensions.Configuration.UserSecrets.targets')" />
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "wg4rasa89hc=",
|
||||
"success": true,
|
||||
"projectFilePath": "/home/julian/RiderProjects/audit-logs/audit-logs/audit-logs.csproj",
|
||||
"expectedPackageFiles": [
|
||||
"/home/julian/.nuget/packages/awssdk.core/3.7.100.14/awssdk.core.3.7.100.14.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/awssdk.securitytoken/3.7.100.14/awssdk.securitytoken.3.7.100.14.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/dnsclient/1.6.1/dnsclient.1.6.1.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.configuration/9.0.0-rc.2.24473.5/microsoft.extensions.configuration.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.configuration.abstractions/9.0.0-rc.2.24473.5/microsoft.extensions.configuration.abstractions.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.configuration.binder/9.0.0-rc.2.24473.5/microsoft.extensions.configuration.binder.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.configuration.commandline/9.0.0-rc.2.24473.5/microsoft.extensions.configuration.commandline.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.configuration.environmentvariables/9.0.0-rc.2.24473.5/microsoft.extensions.configuration.environmentvariables.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.configuration.fileextensions/9.0.0-rc.2.24473.5/microsoft.extensions.configuration.fileextensions.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.configuration.json/9.0.0-rc.2.24473.5/microsoft.extensions.configuration.json.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.configuration.usersecrets/9.0.0-rc.2.24473.5/microsoft.extensions.configuration.usersecrets.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.dependencyinjection/9.0.0-rc.2.24473.5/microsoft.extensions.dependencyinjection.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.dependencyinjection.abstractions/9.0.0-rc.2.24473.5/microsoft.extensions.dependencyinjection.abstractions.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.diagnostics/9.0.0-rc.2.24473.5/microsoft.extensions.diagnostics.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.diagnostics.abstractions/9.0.0-rc.2.24473.5/microsoft.extensions.diagnostics.abstractions.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.fileproviders.abstractions/9.0.0-rc.2.24473.5/microsoft.extensions.fileproviders.abstractions.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.fileproviders.physical/9.0.0-rc.2.24473.5/microsoft.extensions.fileproviders.physical.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.filesystemglobbing/9.0.0-rc.2.24473.5/microsoft.extensions.filesystemglobbing.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.hosting/9.0.0-rc.2.24473.5/microsoft.extensions.hosting.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.hosting.abstractions/9.0.0-rc.2.24473.5/microsoft.extensions.hosting.abstractions.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.logging/9.0.0-rc.2.24473.5/microsoft.extensions.logging.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.logging.abstractions/9.0.0-rc.2.24473.5/microsoft.extensions.logging.abstractions.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.logging.configuration/9.0.0-rc.2.24473.5/microsoft.extensions.logging.configuration.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.logging.console/9.0.0-rc.2.24473.5/microsoft.extensions.logging.console.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.logging.debug/9.0.0-rc.2.24473.5/microsoft.extensions.logging.debug.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.logging.eventlog/9.0.0-rc.2.24473.5/microsoft.extensions.logging.eventlog.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.logging.eventsource/9.0.0-rc.2.24473.5/microsoft.extensions.logging.eventsource.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.options/9.0.0-rc.2.24473.5/microsoft.extensions.options.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.options.configurationextensions/9.0.0-rc.2.24473.5/microsoft.extensions.options.configurationextensions.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.extensions.primitives/9.0.0-rc.2.24473.5/microsoft.extensions.primitives.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.netcore.platforms/5.0.0/microsoft.netcore.platforms.5.0.0.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/microsoft.win32.registry/5.0.0/microsoft.win32.registry.5.0.0.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/mongodb.bson/2.23.1/mongodb.bson.2.23.1.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/mongodb.driver/2.23.1/mongodb.driver.2.23.1.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/mongodb.driver.core/2.23.1/mongodb.driver.core.2.23.1.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/mongodb.libmongocrypt/1.8.0/mongodb.libmongocrypt.1.8.0.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/newtonsoft.json/13.0.3/newtonsoft.json.13.0.3.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/serilog/4.1.1-dev-02318/serilog.4.1.1-dev-02318.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/sharpcompress/0.30.1/sharpcompress.0.30.1.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/snappier/1.0.0/snappier.1.0.0.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/system.buffers/4.5.1/system.buffers.4.5.1.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/system.diagnostics.diagnosticsource/9.0.0-rc.2.24473.5/system.diagnostics.diagnosticsource.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/system.diagnostics.eventlog/9.0.0-rc.2.24473.5/system.diagnostics.eventlog.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/system.io.pipelines/9.0.0-rc.2.24473.5/system.io.pipelines.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/system.memory/4.5.5/system.memory.4.5.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/system.runtime.compilerservices.unsafe/5.0.0/system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/system.security.accesscontrol/5.0.0/system.security.accesscontrol.5.0.0.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/system.security.principal.windows/5.0.0/system.security.principal.windows.5.0.0.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/system.text.encodings.web/9.0.0-rc.2.24473.5/system.text.encodings.web.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/system.text.json/9.0.0-rc.2.24473.5/system.text.json.9.0.0-rc.2.24473.5.nupkg.sha512",
|
||||
"/home/julian/.nuget/packages/zstdsharp.port/0.7.3/zstdsharp.port.0.7.3.nupkg.sha512"
|
||||
],
|
||||
"logs": []
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
"restore":{"projectUniqueName":"/home/julian/RiderProjects/audit-logs/audit-logs/audit-logs.csproj","projectName":"audit-logs","projectPath":"/home/julian/RiderProjects/audit-logs/audit-logs/audit-logs.csproj","outputPath":"/home/julian/RiderProjects/audit-logs/audit-logs/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.Extensions.Hosting":{"target":"Package","version":"[9.0.0-rc.2.24473.5, )"},"MongoDB.Driver":{"target":"Package","version":"[2.23.1, )"},"Newtonsoft.Json":{"target":"Package","version":"[13.0.3, )"},"Serilog":{"target":"Package","version":"[4.1.1-dev-02318, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/home/julian/.dotnet/sdk/8.0.401/PortableRuntimeIdentifierGraph.json"}}
|
||||
@@ -0,0 +1 @@
|
||||
17315251649419027
|
||||
@@ -0,0 +1 @@
|
||||
17315251649419027
|
||||
@@ -0,0 +1,78 @@
|
||||
using audit_logs.Repositories;
|
||||
using audit.Model;
|
||||
|
||||
namespace audit_test.Repository;
|
||||
|
||||
public class AuditRecordRepositoryTests
|
||||
{
|
||||
private AuditRecordRepository _repository = null!;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_repository = new AuditRecordRepository (IntegrationDb.Database);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task InsertRecord_RecordIsInsertedAndCanBeRetrieved()
|
||||
{
|
||||
var record = new AuditRecord
|
||||
{
|
||||
EntityType = "User",
|
||||
RecordId = "1",
|
||||
UserId = "123",
|
||||
ActionType = "Create",
|
||||
ActionTime = DateTime.UtcNow,
|
||||
Changes = new List<AuditRecord.Change>
|
||||
{
|
||||
new AuditRecord.Change { Field = "Username", OldValue = "oldUser", NewValue = "newUser", ValueType = "String" }
|
||||
},
|
||||
Reason = "Ingreso de paciente"
|
||||
};
|
||||
|
||||
await _repository.InsertOneAsync(record);
|
||||
|
||||
var retrievedRecord = await _repository.FindRecordByIdAsync(record.Id);
|
||||
|
||||
Assert.IsNotNull(retrievedRecord);
|
||||
Assert.AreEqual(record.ActionType, retrievedRecord.ActionType);
|
||||
//Assert.AreEqual(record.Details, retrievedRecord.Details);
|
||||
}
|
||||
[Test]
|
||||
public async Task GetAllAuditRecords_ReturnsAllRecords()
|
||||
{
|
||||
// Prepare data
|
||||
var records = new List<AuditRecord>
|
||||
{
|
||||
new AuditRecord { EntityType = "User", RecordId = "1", UserId = "123", ActionType = "Create", ActionTime = DateTime.UtcNow, Reason = "Test Reason 1" },
|
||||
new AuditRecord { EntityType = "Admin", RecordId = "2", UserId = "456", ActionType = "Delete", ActionTime = DateTime.UtcNow, Reason = "Test Reason 2" }
|
||||
};
|
||||
|
||||
foreach (var rec in records)
|
||||
{
|
||||
await _repository.InsertOneAsync(rec);
|
||||
}
|
||||
|
||||
// Test GetAllAuditRecordsAsync method
|
||||
var allRecords = await _repository.GetAllAuditRecordsAsync();
|
||||
|
||||
// Assert that all records are retrieved
|
||||
Assert.IsNotNull(allRecords);
|
||||
Assert.AreEqual(2, allRecords.Count); // This assumes the database is empty before test starts
|
||||
Assert.IsTrue(allRecords.Exists(r => r.RecordId == "1" && r.EntityType == "User"));
|
||||
Assert.IsTrue(allRecords.Exists(r => r.RecordId == "2" && r.EntityType == "Admin"));
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public async Task Cleanup()
|
||||
{
|
||||
|
||||
await IntegrationDb.Database.DropCollectionAsync("AuditRecords");
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
using audit_logs.Utils;
|
||||
|
||||
namespace audit_test.Repository;
|
||||
|
||||
using audit_logs.Repositories;
|
||||
using audit.Model;
|
||||
using audit_logs.Services;
|
||||
|
||||
public class AuditServiceIntegrationTests
|
||||
{
|
||||
private AuditService _service;
|
||||
// private AuditRecordRepository _repository;
|
||||
|
||||
[Order(1)]
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
IntegrationDb.Database.DropCollectionAsync("AuditRecords");
|
||||
//_repository = new AuditRecordRepository(IntegrationDb.Database);
|
||||
_service = new AuditService(IntegrationDb.Database);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task RecordAuditAsync_CreatesAndRetrievesAuditRecord()
|
||||
{
|
||||
// Arrange
|
||||
var changes = new List<AuditRecord.Change>
|
||||
{
|
||||
new AuditRecord.Change
|
||||
{ Field = "Username", OldValue = "oldUser", NewValue = "newUser", ValueType = "String" }
|
||||
};
|
||||
string entityType = "User",
|
||||
recordId = "1",
|
||||
userId = "123",
|
||||
actionType = "Create",
|
||||
reason = "Testing create functionality";
|
||||
DateTime actionTime = DateTime.UtcNow;
|
||||
|
||||
// Act
|
||||
await _service.RecordAuditAsync(entityType, recordId, userId, actionType, reason,actionTime, changes );
|
||||
|
||||
|
||||
// Retrieve all records to validate insertion
|
||||
var allRecords = await _service.AuditLogRepository.GetAllAuditRecordsAsync();
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(1, allRecords.Count, "There should be exactly three audit record in the database.");
|
||||
var storedRecord = allRecords[0];
|
||||
Assert.AreEqual(entityType, storedRecord.EntityType);
|
||||
Assert.AreEqual(recordId, storedRecord.RecordId);
|
||||
Assert.AreEqual(userId, storedRecord.UserId);
|
||||
Assert.AreEqual(actionType, storedRecord.ActionType);
|
||||
Assert.AreEqual(reason, storedRecord.Reason);
|
||||
// Assert.That(storedRecord.Changes, Is.EquivalentTo(changes).Using(new ChangeComparer()), "Changes should match the input changes.");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task GetAllAuditRecords_ReturnsAllRecords()
|
||||
{
|
||||
// Prepare multiple records
|
||||
var records = new List<AuditRecord>
|
||||
{
|
||||
new AuditRecord
|
||||
{
|
||||
EntityType = "User", RecordId = "1", UserId = "123", ActionType = "Create",
|
||||
ActionTime = DateTime.UtcNow, Reason = "Test Reason 1"
|
||||
},
|
||||
new AuditRecord
|
||||
{
|
||||
EntityType = "Admin", RecordId = "2", UserId = "456", ActionType = "Delete",
|
||||
ActionTime = DateTime.UtcNow, Reason = "Test Reason 2"
|
||||
}
|
||||
};
|
||||
|
||||
foreach (var rec in records)
|
||||
{
|
||||
await _service.AuditLogRepository.InsertOneAsync(rec);
|
||||
}
|
||||
|
||||
// Test retrieval method
|
||||
var allRecords = await _service.AuditLogRepository.GetAllAuditRecordsAsync();
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(2, allRecords.Count, "All records should be retrieved.");
|
||||
Assert.IsTrue(allRecords.Exists(r => r.RecordId == "1" && r.EntityType == "User"));
|
||||
Assert.IsTrue(allRecords.Exists(r => r.RecordId == "2" && r.EntityType == "Admin"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task DetectChangesAsync_DetectsAndRecordsChanges()
|
||||
{
|
||||
// Arrange
|
||||
string originalJson = "{ \"Username\": \"oldUser\", \"Email\": \"old@example.com\", \"address\": 15 }";
|
||||
string modifiedJson =
|
||||
"{ \"Username\": \"newUser\", \"Email\": \"old@example.com\", \"PhoneNumber\": \"123456789\" }";
|
||||
|
||||
// Variables de auditoría
|
||||
string entityType = "User";
|
||||
string recordId = "1";
|
||||
string userId = "123";
|
||||
string actionType = "Update";
|
||||
DateTime actionTime = DateTime.UtcNow;
|
||||
string reason = "Testing change detection";
|
||||
|
||||
// Act - Llamar a DetectChangesAsync para que identifique cambios
|
||||
await _service.CreateAuditLogAsync(entityType, recordId, userId, actionType, reason,actionTime,originalJson, modifiedJson);
|
||||
|
||||
// Act - Registrar la auditoría usando los cambios detectados
|
||||
// List<AuditRecord.Change> changes = new JsonComparer().GetDifferences(originalJson, modifiedJson);
|
||||
//await _service.RecordAuditAsync(entityType, recordId, userId, actionType, reason,actionTime, changes, );
|
||||
|
||||
// Retrieve all records to validate insertion
|
||||
var allRecords = await _service.AuditLogRepository.GetAllAuditRecordsAsync();
|
||||
|
||||
// Assert
|
||||
Assert.AreEqual(1, allRecords.Count, "Debe haber exactamente un registro de auditoría en la base de datos.");
|
||||
var storedRecord = allRecords[0];
|
||||
Assert.AreEqual(entityType, storedRecord.EntityType);
|
||||
Assert.AreEqual(recordId, storedRecord.RecordId);
|
||||
Assert.AreEqual(userId, storedRecord.UserId);
|
||||
Assert.AreEqual(actionType, storedRecord.ActionType);
|
||||
Assert.AreEqual(reason, storedRecord.Reason);
|
||||
|
||||
// Verificar que los cambios detectados sean correctos
|
||||
Assert.AreEqual(3, storedRecord.Changes.Count, "Debería detectar dos cambios.");
|
||||
|
||||
var changeUsername = storedRecord.Changes.Find(c => c.Field == "Username");
|
||||
Assert.NotNull(changeUsername, "Debe existir un cambio en el campo 'Username'.");
|
||||
Assert.AreEqual("oldUser", changeUsername.OldValue.AsString);
|
||||
Assert.AreEqual("newUser", changeUsername.NewValue.AsString);
|
||||
Assert.AreEqual("string", changeUsername.ValueType);
|
||||
|
||||
var changePhoneNumber = storedRecord.Changes.Find(c => c.Field == "PhoneNumber");
|
||||
Assert.NotNull(changePhoneNumber, "Debe existir un cambio en el campo 'PhoneNumber'.");
|
||||
Assert.IsTrue(changePhoneNumber.OldValue.IsBsonNull, "El valor anterior de 'PhoneNumber' debe ser nulo.");
|
||||
Assert.AreEqual("123456789", changePhoneNumber.NewValue.AsString);
|
||||
Assert.AreEqual("string", changePhoneNumber.ValueType);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
using audit_logs.Utils;
|
||||
|
||||
namespace audit_test.Repository;
|
||||
using Mongo2Go;
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Driver;
|
||||
|
||||
[SetUpFixture]
|
||||
[Category("Integration")]
|
||||
public class IntegrationDb
|
||||
{
|
||||
public static MongoDbRunner Runner { get { return _runner; } }
|
||||
public static MongoClient Client { get { return _client; } }
|
||||
public static IMongoDatabase Database { get; private set; } = null!;
|
||||
|
||||
private static MongoDbRunner _runner = null!;
|
||||
private static MongoClient _client = null!;
|
||||
|
||||
private const int TimeoutInSeconds = 60; // Set the desired timeout in seconds.
|
||||
public static string DatabaseName { get; private set; } = "IntegrationTestDb";
|
||||
|
||||
[OneTimeSetUp]
|
||||
public void InitIntegrationTests()
|
||||
{
|
||||
StartMongoDbRunner().Wait();
|
||||
MongoDbHostBuilderExtension.ConfigureMongoDbConventions();
|
||||
//MongoDbHostBuilderExtension.ConfigureRegisterMapClass();
|
||||
_client = new MongoClient(_runner.ConnectionString);
|
||||
Database = _client.GetDatabase(DatabaseName);
|
||||
}
|
||||
|
||||
private static async Task StartMongoDbRunner()
|
||||
{
|
||||
_runner = MongoDbRunner.Start();
|
||||
|
||||
// Wait for the MongoDB server to become available or timeout.
|
||||
var startTime = DateTime.UtcNow;
|
||||
while (DateTime.UtcNow - startTime < TimeSpan.FromSeconds(TimeoutInSeconds))
|
||||
{
|
||||
try
|
||||
{
|
||||
var testClient = new MongoClient(_runner.ConnectionString);
|
||||
var adminDb = testClient.GetDatabase("admin");
|
||||
await adminDb.RunCommandAsync((Command<BsonDocument>)"{ping:1}");
|
||||
return; // MongoDB server is available, continue.
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Retry after a short delay.
|
||||
await Task.Delay(500);
|
||||
}
|
||||
}
|
||||
|
||||
// Timeout reached, dispose the runner and throw an exception.
|
||||
_runner?.Dispose();
|
||||
throw new TimeoutException("Timeout while starting MongoDB server.");
|
||||
}
|
||||
|
||||
[OneTimeTearDown]
|
||||
public void TeardownIntegrationTests()
|
||||
{
|
||||
_runner?.Dispose();
|
||||
_runner = null;
|
||||
_client = null;
|
||||
Database = null;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
using audit.Model;
|
||||
using audit.Repositories.Interfaces;
|
||||
using audit_logs.Services;
|
||||
|
||||
namespace audit_test.Service;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
public class AuditServiceTests
|
||||
{
|
||||
private readonly Mock<IAuditRecordRepository> _mockRepository;
|
||||
private readonly AuditService _auditService;
|
||||
private readonly AuditRecord _testAuditRecord;
|
||||
|
||||
public AuditServiceTests()
|
||||
{
|
||||
// creo el mock del repositorio
|
||||
_mockRepository = new Mock<IAuditRecordRepository>();
|
||||
|
||||
// preparo el servicio con el mock de repositorio
|
||||
_auditService = new AuditService(_mockRepository.Object);
|
||||
|
||||
// configuracion del registro
|
||||
_testAuditRecord = new AuditRecord
|
||||
{
|
||||
EntityType = "User",
|
||||
RecordId = "1",
|
||||
UserId = "123",
|
||||
ActionType = "Create",
|
||||
ActionTime = DateTime.UtcNow,
|
||||
Changes = new List<AuditRecord.Change>
|
||||
{
|
||||
new AuditRecord.Change { Field = "Username", OldValue = "oldUser", NewValue = "newUser", ValueType = "String" }
|
||||
},
|
||||
Reason = "Ingreso de paciente"
|
||||
};
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task RecordAuditAsync_ValidRecord_InsertsRecord()
|
||||
{
|
||||
// Arrange
|
||||
_mockRepository.Setup(repo => repo.InsertOneAsync(It.IsAny<AuditRecord>()))
|
||||
.Returns(Task.CompletedTask);
|
||||
|
||||
// Act
|
||||
await _auditService.RecordAuditAsync(
|
||||
_testAuditRecord.EntityType,
|
||||
_testAuditRecord.RecordId,
|
||||
_testAuditRecord.UserId,
|
||||
_testAuditRecord.ActionType,
|
||||
_testAuditRecord.Reason,
|
||||
_testAuditRecord.ActionTime,
|
||||
_testAuditRecord.Changes
|
||||
);
|
||||
|
||||
// Assert
|
||||
_mockRepository.Verify(repo => repo.InsertOneAsync(It.IsAny<AuditRecord>()), Times.Once);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task RecordAuditAsync_NullRecord_ThrowsArgumentNullException()
|
||||
{
|
||||
// Act & Assert
|
||||
await Assert.ThrowsAsync<ArgumentNullException>(() =>
|
||||
_auditService.RecordAuditAsync(null, null, null, null, null,DateTime.MinValue, null));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace audit_test;
|
||||
|
||||
public class Tests
|
||||
{
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Test1()
|
||||
{
|
||||
Assert.Pass();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<RootNamespace>audit_test</RootNamespace>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
<IsTestProject>true</IsTestProject>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0"/>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
|
||||
<PackageReference Include="Mongo2Go" Version="2.2.16" />
|
||||
<PackageReference Include="Moq" Version="4.20.72" />
|
||||
<PackageReference Include="NUnit" Version="3.14.0"/>
|
||||
<PackageReference Include="NUnit.Analyzers" Version="3.9.0"/>
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0"/>
|
||||
<PackageReference Include="xunit" Version="2.9.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Using Include="NUnit.Framework"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\audit-logs\audit-logs.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Executable
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user