using System; using Microsoft.Extensions.DependencyInjection; namespace OpenHarbor.CQRS.AspNetCore.Mvc; public static class MvcBuilderExtensions { public static IMvcBuilder AddOpenHarborQueries(this IMvcBuilder builder, Action configuration = null) { var options = new QueryControllerOptions(); configuration?.Invoke(options); var services = builder.Services; var serviceProvider = services.BuildServiceProvider(); builder.AddMvcOptions(o => o.Conventions.Add(new QueryControllerConvention(serviceProvider))); builder.ConfigureApplicationPartManager(m => m.FeatureProviders.Add(new QueryControllerFeatureProvider(serviceProvider))); return builder; } public static IMvcBuilder AddOpenHarborCommands(this IMvcBuilder builder) { var services = builder.Services; var serviceProvider = services.BuildServiceProvider(); builder.AddMvcOptions(o => o.Conventions.Add(new CommandControllerConvention(serviceProvider))); builder.ConfigureApplicationPartManager(m => m.FeatureProviders.Add(new CommandControllerFeatureProvider(serviceProvider))); return builder; } }