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