feat: introduce AppSettings per application
- AppSettings class in Api and Worker with SectionName constant - appsettings.json: replaced ConnectionStrings section with App section - Program.cs: bind AppSettings at startup, register as singleton - Connection string now sourced from AppSettings.ConnectionString Ref: IT-628 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
namespace HrynCo.NotificationService.Api;
|
||||||
|
|
||||||
|
public sealed class AppSettings
|
||||||
|
{
|
||||||
|
public const string SectionName = "App";
|
||||||
|
|
||||||
|
public string ConnectionString { get; init; } = string.Empty;
|
||||||
|
}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using HrynCo.NotificationService.Api;
|
||||||
using HrynCo.NotificationService.DAL.EF;
|
using HrynCo.NotificationService.DAL.EF;
|
||||||
using HrynCo.NotificationService.Services;
|
using HrynCo.NotificationService.Services;
|
||||||
using Serilog;
|
using Serilog;
|
||||||
@@ -7,13 +8,14 @@ var builder = WebApplication.CreateBuilder(args);
|
|||||||
builder.Host.UseSerilog((context, lc) =>
|
builder.Host.UseSerilog((context, lc) =>
|
||||||
lc.ReadFrom.Configuration(context.Configuration));
|
lc.ReadFrom.Configuration(context.Configuration));
|
||||||
|
|
||||||
|
var appSettings = builder.Configuration
|
||||||
|
.GetSection(AppSettings.SectionName)
|
||||||
|
.Get<AppSettings>() ?? throw new InvalidOperationException("App settings are not configured.");
|
||||||
|
|
||||||
|
builder.Services.AddSingleton(appSettings);
|
||||||
builder.Services.AddOpenApi();
|
builder.Services.AddOpenApi();
|
||||||
builder.Services.AddControllers();
|
builder.Services.AddControllers();
|
||||||
|
builder.Services.AddNotificationDataAccess(appSettings.ConnectionString);
|
||||||
string connectionString = builder.Configuration.GetConnectionString("Default")
|
|
||||||
?? throw new InvalidOperationException("Connection string 'Default' is not configured.");
|
|
||||||
|
|
||||||
builder.Services.AddNotificationDataAccess(connectionString);
|
|
||||||
builder.Services.AddNotificationServices();
|
builder.Services.AddNotificationServices();
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"ConnectionStrings": {
|
"App": {
|
||||||
"Default": "Host=localhost;Port=5432;Database=notification_service;Username=postgres;Password=postgres"
|
"ConnectionString": "Host=localhost;Port=5432;Database=notification_service;Username=postgres;Password=postgres"
|
||||||
},
|
},
|
||||||
"Serilog": {
|
"Serilog": {
|
||||||
"MinimumLevel": {
|
"MinimumLevel": {
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
namespace HrynCo.NotificationService.Worker;
|
||||||
|
|
||||||
|
public sealed class AppSettings
|
||||||
|
{
|
||||||
|
public const string SectionName = "App";
|
||||||
|
|
||||||
|
public string ConnectionString { get; init; } = string.Empty;
|
||||||
|
}
|
||||||
@@ -8,10 +8,12 @@ var builder = Host.CreateApplicationBuilder(args);
|
|||||||
builder.Services.AddSerilog(lc =>
|
builder.Services.AddSerilog(lc =>
|
||||||
lc.ReadFrom.Configuration(builder.Configuration));
|
lc.ReadFrom.Configuration(builder.Configuration));
|
||||||
|
|
||||||
string connectionString = builder.Configuration.GetConnectionString("Default")
|
var appSettings = builder.Configuration
|
||||||
?? throw new InvalidOperationException("Connection string 'Default' is not configured.");
|
.GetSection(AppSettings.SectionName)
|
||||||
|
.Get<AppSettings>() ?? throw new InvalidOperationException("App settings are not configured.");
|
||||||
|
|
||||||
builder.Services.AddNotificationDataAccess(connectionString);
|
builder.Services.AddSingleton(appSettings);
|
||||||
|
builder.Services.AddNotificationDataAccess(appSettings.ConnectionString);
|
||||||
builder.Services.AddNotificationServices();
|
builder.Services.AddNotificationServices();
|
||||||
builder.Services.AddHostedService<Worker>();
|
builder.Services.AddHostedService<Worker>();
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"ConnectionStrings": {
|
"App": {
|
||||||
"Default": "Host=localhost;Port=5432;Database=notification_service;Username=postgres;Password=postgres"
|
"ConnectionString": "Host=localhost;Port=5432;Database=notification_service;Username=postgres;Password=postgres"
|
||||||
},
|
},
|
||||||
"Serilog": {
|
"Serilog": {
|
||||||
"MinimumLevel": {
|
"MinimumLevel": {
|
||||||
|
|||||||
Reference in New Issue
Block a user