using Femto.Modules.Media.Data;
using MediatR;
namespace Femto.Modules.Media.Infrastructure.PipelineBehaviours;
///
/// automatically call unit of work after all requuests
///
internal class SaveChangesPipelineBehaviour(MediaContext context)
: IPipelineBehavior where TRequest : notnull
{
public async Task Handle(
TRequest request,
RequestHandlerDelegate next,
CancellationToken cancellationToken
)
{
var response = await next(cancellationToken);
if (context.ChangeTracker.HasChanges())
await context.SaveChangesAsync(cancellationToken);
return response;
}
}