From f3c9af657e3de1de927d364909a9bb244d860660 Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Fri, 7 Jan 2022 15:19:26 +0000 Subject: [PATCH] Use connection string for app.settings --- .gitignore | 2 + .../Startup.cs | 58 ++++++++++++++++++- .../appsettings.Development.json | 9 --- .../appsettings.json | 2 +- .../quartz.config | 3 +- 5 files changed, 59 insertions(+), 15 deletions(-) delete mode 100644 TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/appsettings.Development.json diff --git a/.gitignore b/.gitignore index dfcfd56..aa4aab9 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,8 @@ *.user *.userosscache *.sln.docstates +*.[Dd]evelopment.json +*.[Dd]evelopment.config # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs diff --git a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/Startup.cs b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/Startup.cs index aed6acd..39a135e 100644 --- a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/Startup.cs +++ b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/Startup.cs @@ -1,6 +1,7 @@ namespace TransactionProcessing.SchedulerService { using System; + using System.Configuration; using Jobs; using Jobs.GenerateTransactions; using Microsoft.AspNetCore.Builder; @@ -13,10 +14,61 @@ namespace TransactionProcessing.SchedulerService public class Startup { - public IConfiguration Configuration { get; } - public Startup(IConfiguration configuration) + /// + /// Gets or sets the configuration. + /// + /// + /// The configuration. + /// + public static IConfigurationRoot Configuration { get; set; } + + /// + /// Gets or sets the web host environment. + /// + /// + /// The web host environment. + /// + public static IWebHostEnvironment WebHostEnvironment { get; set; } + + public Startup(IWebHostEnvironment webHostEnvironment) { - this.Configuration = configuration; + //this.Configuration = configuration; + IConfigurationBuilder builder = new ConfigurationBuilder().SetBasePath(webHostEnvironment.ContentRootPath) + .AddJsonFile("/home/txnproc/config/appsettings.json", true, true) + .AddJsonFile($"/home/txnproc/config/appsettings.{webHostEnvironment.EnvironmentName}.json", optional: true) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"appsettings.{webHostEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true) + .AddEnvironmentVariables(); + + Startup.Configuration = builder.Build(); + Startup.WebHostEnvironment = webHostEnvironment; + + var connectionString = Configuration.GetConnectionString("SchedulerReadModel"); + AddOrUpdateConnectionString("SchedulerReadModel", connectionString); + } + + public static void AddOrUpdateConnectionString(string name, string connectionString) + { + try + { + var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); + var settings = configFile.ConnectionStrings.ConnectionStrings; + + if (settings[name] == null) + { + settings.Add(new ConnectionStringSettings(name, connectionString)); + } + else + { + settings[name].ConnectionString = connectionString; + } + configFile.Save(ConfigurationSaveMode.Modified); + ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name); + } + catch (ConfigurationErrorsException) + { + Console.WriteLine("Error writing connection string"); + } } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) diff --git a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/appsettings.Development.json b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/appsettings.Development.json deleted file mode 100644 index 8983e0f..0000000 --- a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/appsettings.Development.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - } -} diff --git a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/appsettings.json b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/appsettings.json index 270a6ab..1a22697 100644 --- a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/appsettings.json +++ b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/appsettings.json @@ -7,6 +7,6 @@ } }, "ConnectionStrings": { - "SchedulerReadModel": "server=127.0.0.1;user id=sa;password=sp1ttal;database=Scheduler" + "SchedulerReadModel": "server=127.0.0.1;user id=sa;password=Scotland;database=Scheduler" } } diff --git a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/quartz.config b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/quartz.config index 9248104..616509f 100644 --- a/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/quartz.config +++ b/TransactionProcessing.SchedulerService/TransactionProcessing.SchedulerService/quartz.config @@ -1,7 +1,6 @@ quartz.scheduler.instanceName = Txn Processing Scheduler quartz.dataSource.JobStore.provider = SqlServer -#quartz.dataSource.JobStore.connectionStringName = SchedulerReadModel -quartz.dataSource.JobStore.connectionString = server=127.0.0.1;user id=sa;password=sp1ttal;database=Scheduler +quartz.dataSource.JobStore.connectionStringName = SchedulerReadModel quartz.jobStore.useProperties = true quartz.jobStore.tablePrefix = QRTZ_ quartz.jobStore.type = Quartz.Impl.AdoJobStore.JobStoreTX, Quartz