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); }
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); }
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) })); }