예제 #1
0
        public GraphRepository(IGremlinClientFactory clientFactory,
                               IPathResultsTransform pathResultsTransform,
                               int degreeOfParallelism = 5)
        {
            Guard.ArgumentNotNull(pathResultsTransform, nameof(pathResultsTransform));
            Guard.ArgumentNotNull(clientFactory, nameof(clientFactory));

            _pathResultsTransform = pathResultsTransform;
            _clientFactory        = clientFactory;
            _degreeOfParallelism  = degreeOfParallelism;
        }
예제 #2
0
        public void RegisterComponents(IServiceCollection builder)
        {
            builder.AddSingleton <IUserProfileProvider, UserProfileProvider>();
            builder
            .AddScoped <IHealthChecker, ControllerResolverHealthCheck>();

            builder
            .AddScoped <IGremlinClientFactory, GremlinClientFactory>();
            builder
            .AddScoped <IPathResultsTransform, PathResultsTransform>();
            builder
            .AddScoped <ICosmosGraphDbSettings>(ctx =>
            {
                CosmosGraphDbSettings settings = new CosmosGraphDbSettings();

                Configuration.Bind("CosmosGraphSettings", settings);

                return(settings);
            });

            builder
            .AddScoped <IGraphRepository>(ctx =>
            {
                IGremlinClientFactory gremlinClientFactory = ctx.GetService <IGremlinClientFactory>();
                IPathResultsTransform pathResultsTransform = ctx.GetService <IPathResultsTransform>();
                ICosmosGraphDbSettings settings            = ctx.GetService <ICosmosGraphDbSettings>();

                return(new GraphRepository(gremlinClientFactory, pathResultsTransform, settings.DegreeOfParallelism == 0 ? 15 : settings.DegreeOfParallelism));
            });

            builder
            .AddScoped <ISpecificationRepository, SpecificationRepository>();

            builder
            .AddScoped <ICalculationRepository, CalculationRepository>();

            builder
            .AddScoped <IGraphService, GraphService>();

            builder
            .AddScoped <IDatasetRepository, DatasetRepository>();

            builder
            .AddScoped <IFundingLineRepository, FundingLineRepository>();

            builder.AddApiKeyMiddlewareSettings((IConfigurationRoot)Configuration);

            builder.AddHttpContextAccessor();

            builder.AddHealthCheckMiddleware();

            builder.AddApplicationInsightsTelemetry();
            builder.AddApplicationInsightsTelemetryClient(Configuration, "CalculateFunding.Api.Graph");
            builder.AddApplicationInsightsServiceName(Configuration, "CalculateFunding.Api.Graph");
            builder.AddLogging("CalculateFunding.Api.Graph");

            if (Configuration.IsSwaggerEnabled())
            {
                builder.ConfigureSwaggerServices(title: "Graph Microservice API");
            }
        }