Files
hrynco-notification-service/HrynCo.NotificationService.Services/ServiceCollectionExtensions.cs
T
Anatolii Grynchuk 92be035f51 feat: replace manual Stopwatch with IProfiler in TransactionBehavior
- Add HrynCo.Common to Services project
- TransactionBehavior now uses IProfiler.MeasureExecutionAsync:
  MeasureExecutionAsync -> ExecuteInTransactionAsync -> next() -> SaveChangesAsync
- Profiler logs Start/End with duration + memory delta via Serilog PerformanceLog context
- Register IProfiler as singleton in ServiceCollectionExtensions (uses Log.Logger)

Ref: IT-628

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-02 01:15:10 +03:00

26 lines
848 B
C#

using HrynCo.Common;
using HrynCo.NotificationService.Services.Behaviors;
using HrynCo.NotificationService.Services.Logging;
using MediatR;
using Microsoft.Extensions.DependencyInjection;
using Serilog;
namespace HrynCo.NotificationService.Services;
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddNotificationServices(this IServiceCollection services)
{
services.AddMediatR(cfg =>
{
cfg.RegisterServicesFromAssembly(typeof(ServiceCollectionExtensions).Assembly);
cfg.AddBehavior(typeof(IPipelineBehavior<,>), typeof(TransactionBehavior<,>));
});
services.AddTransient(typeof(IContextualSerilogLogger<>), typeof(ContextualSerilogLogger<>));
services.AddSingleton<IProfiler>(new Profiler(Log.Logger));
return services;
}
}