コード例 #1
0
ファイル: BuilderExtensions.cs プロジェクト: fzf003/EventFly
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 public EventFlyWebApiBuilder(EventFlyBuilder builder)
 {
     Builder = builder;
 }
コード例 #5
0
ファイル: BuilderExtensions.cs プロジェクト: fzf003/EventFly
 public EventFlyGraphQlBuilder(EventFlyBuilder builder)
 {
     Builder = builder;
 }