UNPKG

leds-spark-lib

Version:

Biblioteca de geração de código

48 lines (39 loc) 1.76 kB
import { expandToStringWithNL } from "../../../../../models/model.js"; import fs from "fs"; import path from "path"; export function generate(model, target_folder) { fs.writeFileSync(path.join(target_folder, `ValidationBehavior.cs`), generateValidationBehavior(model)); } function generateValidationBehavior(model) { return expandToStringWithNL ` using FluentValidation; using MediatR; namespace ${model.configuration?.name}.Application.Shared.Behavior { public sealed class ValidationBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> where TRequest : IRequest<TResponse> { private readonly IEnumerable<IValidator<TRequest>> _validators; public ValidationBehavior(IEnumerable<IValidator<TRequest>> validators) { _validators = validators; } public async Task<TResponse> Handle(TRequest request, RequestHandlerDelegate<TResponse> next, CancellationToken cancellationToken) { if (!_validators.Any()) return await next(); var context = new ValidationContext<TRequest>(request); if (_validators.Any()) { context = new ValidationContext<TRequest>(request); var validationResults = await Task.WhenAll(_validators.Select(v => v.ValidateAsync(context, cancellationToken))); var failures = validationResults.SelectMany(r => r.Errors).Where(f => f != null).ToList(); if (failures.Count != 0) throw new FluentValidation.ValidationException(failures); } return await next(); } } }`; } //# sourceMappingURL=generate.js.map