public static EventFlyGraphQlBuilder ConfigureGraphQl(this EventFlyBuilder builder, Action <EventFlyGraphQlOptions> optionsBuilder) { var options = new EventFlyGraphQlOptions("graphql"); var services = builder.Services; services.AddSingleton(options); services.AddSingleton <IDocumentExecuter, DocumentExecuter>(); services.AddSingleton <IDocumentWriter, DocumentWriter>(); services.AddSingleton <Root>(); services.AddSingleton <ISchema, GraphSchemaInternal>(); services.AddGraphQL(_ => { _.EnableMetrics = true; _.ExposeExceptions = true; }); foreach (var query in builder.ApplicationDefinition.Queries) { var handlerType = typeof(GraphQueryHandler <,>).MakeGenericType(query.Type, query.QueryResultType); var handlerFullType = typeof(IGraphQueryHandler <,>).MakeGenericType(query.Type, query.QueryResultType); services.AddSingleton(handlerFullType, handlerType); //services.AddSingleton(provider => (IGraphQueryHandler) provider.GetService(handlerFullType)); } return(new EventFlyGraphQlBuilder(builder)); }
public static EventFlyWebApiBuilder ConfigureWebApi(this EventFlyBuilder eventFlyBuilder, Action <EventFlyWebApiOptions> optionsBuilder) { var options = new EventFlyWebApiOptions("api"); optionsBuilder(options); eventFlyBuilder.Services.AddSingleton(options); return(new EventFlyWebApiBuilder(eventFlyBuilder)); }
public static EventFlyBuilder AddRabbitMqDomainEventProvider(this EventFlyBuilder eventFlyBuilder, Action <IRabbitMqEventProviderConfiguration> configure) { if (configure is null) { throw new ArgumentNullException(nameof(configure)); } var cfg = new RabbitMqEventProviderConfiguration(); configure(cfg); eventFlyBuilder.Services.AddHostedService(sp => { var appDefinition = sp.GetService <IApplicationDefinition>(); var domainEventFactory = sp.GetService <IDomainEventFactory>(); var domainEventBus = sp.GetService <IDomainEventBus>(); return(new RabbitMqEventProvider(cfg, appDefinition, domainEventFactory, domainEventBus)); }); return(eventFlyBuilder); }
public EventFlyWebApiBuilder(EventFlyBuilder builder) { Builder = builder; }
public EventFlyGraphQlBuilder(EventFlyBuilder builder) { Builder = builder; }