using FluentValidation; using Microsoft.Extensions.DependencyInjection; using OpenHarbor.CQRS.Abstractions; namespace OpenHarbor.CQRS.FluentValidation; public static class ServiceCollectionExtensions { private static IServiceCollection AddFluentValidator(this IServiceCollection services) where TValidator : class, IValidator { services.AddTransient, TValidator>(); return services; } public static IServiceCollection AddCommand(this IServiceCollection services) where TCommand : class where TCommandHandler : class, ICommandHandler where TValidator : class, IValidator { return services.AddCommand() .AddFluentValidator(); } public static IServiceCollection AddCommand(this IServiceCollection services) where TCommand : class where TCommandHandler : class, ICommandHandler where TValidator : class, IValidator { return services.AddCommand() .AddFluentValidator(); } public static IServiceCollection AddQuery(this IServiceCollection services) where TQuery : class where TQueryHandler : class, IQueryHandler where TValidator : class, IValidator { services.AddQuery() .AddFluentValidator(); return services; } }