using HrynCo.NotificationService.DAL.Abstract; using MediatR; namespace HrynCo.NotificationService.Services.Behaviors; public class TransactionBehavior : IPipelineBehavior where TRequest : notnull { private readonly IUnitOfWork _unitOfWork; public TransactionBehavior(IUnitOfWork unitOfWork) { _unitOfWork = unitOfWork; } public Task Handle(TRequest request, RequestHandlerDelegate next, CancellationToken cancellationToken) { return _unitOfWork.ExecuteInTransactionAsync(async () => { TResponse result = await next(); await _unitOfWork.SaveChangesAsync(cancellationToken); return result; }); } }