- Flatten nested per-repo folders into flat Musify.* projects at root - Rename assemblies/csproj: Domain->Musify.Domain, Application->Musify.Application, Infrastructure->Musify.Infrastructure, WebApi->Musify.Api, Worker->Musify.Worker, StreamingGateway->Musify.StreamingGateway - Rename WebApi.* namespaces to Musify.Api.* - Update all ProjectReference paths and the solution file - Consolidate stray per-repo dotfiles; add root .gitattributes - Move flutter client out to _archive Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
20 lines
658 B
C#
20 lines
658 B
C#
using FluentValidation;
|
|
|
|
namespace Musify.Api.Filters;
|
|
|
|
public sealed class ValidationFilter<T>(IValidator<T> validator) : IEndpointFilter where T : class
|
|
{
|
|
public async ValueTask<object?> InvokeAsync(EndpointFilterInvocationContext context, EndpointFilterDelegate next)
|
|
{
|
|
var argument = context.Arguments.OfType<T>().FirstOrDefault();
|
|
|
|
if (argument is null)
|
|
return await next(context);
|
|
|
|
var result = await validator.ValidateAsync(argument, context.HttpContext.RequestAborted);
|
|
|
|
return result.IsValid
|
|
? await next(context)
|
|
: Results.ValidationProblem(result.ToDictionary());
|
|
}
|
|
} |