Ejemplo n.º 1
0
        static IServiceCollection ConfigureCompilerOptions(this IServiceCollection services, IConfiguration config)
        {
            // App Db Connection
            services.Configure <AppDbOptions>(opts =>
            {
                opts.ConnectionString = config.GetByProxy(Config.Db.App.Connection);
                opts.DefaultTimeout   = config.GetValue <int>(Config.Db.App.DefaultTimeout);
            });

            // Clin Db Connection
            services.Configure <ClinDbOptions>(opts =>
            {
                opts.ConnectionString = config.GetByProxy(Config.Db.Clin.Connection);
                opts.DefaultTimeout   = config.GetValue <int>(Config.Db.Clin.DefaultTimeout);
            });

            var extractor = new DatabaseExtractor();
            var sp        = services.BuildServiceProvider();

            // SQL Compiler Options
            config.TryBind <CompilerOptions>(Config.Compiler.Section, out var compilerOptions);
            services.Configure <CompilerOptions>(opts =>
            {
                opts.Alias            = compilerOptions.Alias;
                opts.FieldPersonId    = compilerOptions.FieldPersonId;
                opts.FieldEncounterId = compilerOptions.FieldEncounterId;

                opts.AppDb  = extractor.ExtractDatabase(sp.GetService <IOptions <AppDbOptions> >().Value);
                opts.ClinDb = extractor.ExtractDatabase(sp.GetService <IOptions <ClinDbOptions> >().Value);
            });
            return(services);
        }
Ejemplo n.º 2
0
        static IServiceCollection ConfigureCompilerOptions(this IServiceCollection services, IConfiguration config)
        {
            // App Db Connection
            services.Configure <AppDbOptions>(opts =>
            {
                opts.ConnectionString = config.GetByProxy(Config.Db.App.Connection);
                opts.DefaultTimeout   = config.GetValue <int>(Config.Db.App.DefaultTimeout);
            });

            // Clin Db Connection
            services.Configure <ClinDbOptions>(opts =>
            {
                opts.ConnectionString = config.GetByProxy(Config.Db.Clin.Connection);
                opts.DefaultTimeout   = config.GetValue <int>(Config.Db.Clin.DefaultTimeout);
                opts.Cohort.WithQueryStrategy(config.GetValue <string>(Config.Db.Clin.Cohort.QueryStrategy));

                if (opts.Cohort.QueryStrategy == ClinDbOptions.ClinDbCohortOptions.QueryStrategyOptions.Parallel)
                {
                    if (!config.TryGetValue <int>(Config.Db.Clin.Cohort.MaxParallelThreads, out var maxThreads))
                    {
                        opts.Cohort.MaxParallelThreads = 5;
                    }
                    else
                    {
                        opts.Cohort.MaxParallelThreads = maxThreads;
                    }

                    if (opts.Cohort.MaxParallelThreads <= 0)
                    {
                        throw new LeafConfigurationException($"ClinDb Cohort MaxParallelThreads must be greater than zero, but is set to {maxThreads}");
                    }
                }
            });

            var extractor = new DatabaseExtractor();
            var sp        = services.BuildServiceProvider();

            // SQL Compiler Options
            config.TryBind <CompilerOptions>(Config.Compiler.Section, out var compilerOptions);
            services.Configure <CompilerOptions>(opts =>
            {
                opts.Alias            = compilerOptions.Alias;
                opts.FieldPersonId    = compilerOptions.FieldPersonId;
                opts.FieldEncounterId = compilerOptions.FieldEncounterId;

                opts.AppDb  = extractor.ExtractDatabase(sp.GetService <IOptions <AppDbOptions> >().Value);
                opts.ClinDb = extractor.ExtractDatabase(sp.GetService <IOptions <ClinDbOptions> >().Value);
            });
            return(services);
        }
Ejemplo n.º 3
0
        static IOptions <CompilerOptions> GetCompilerOptions()
        {
            var dbOpts = new AppDbOptions
            {
                ConnectionString = @"Server=fake;Database=LeafDB;Trusted_Connection=True"
            };

            return(Options.Create(new CompilerOptions {
                AppDb = extractor.ExtractDatabase(dbOpts)
            }));
        }