Extract shared configuration helpers into Infrastructure.Configuration library (#248)

This commit is contained in:
2026-08-25 14:16:57 -04:00
committed by GitHub
parent 8a047e8d9f
commit 2b82d1918b
22 changed files with 161 additions and 64 deletions

View File

@@ -1,10 +0,0 @@
using Microsoft.Extensions.Configuration;
namespace Database.Connection;
public static class ConfigurationHelpers
{
public static string GetKeyOrThrow(IConfiguration configuration, string key) =>
configuration[key]
?? throw new InvalidOperationException($"The {key} environment variable is not set.");
}

View File

@@ -11,11 +11,14 @@
<PackageReference Include="Microsoft.SqlServer.Types" Version="160.1000.6" />
<PackageReference
Include="Microsoft.Extensions.Configuration.Abstractions"
Version="9.0.0"
Version="10.0.1"
/>
<PackageReference
Include="Microsoft.Extensions.DependencyInjection.Abstractions"
Version="10.0.0"
/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Infrastructure\Infrastructure.Configuration\Infrastructure.Configuration.csproj" />
</ItemGroup>
</Project>

View File

@@ -1,4 +1,4 @@
using System.Data.Common;
using Infrastructure.Configuration;
using Microsoft.Data.SqlClient;
using Microsoft.Extensions.Configuration;
@@ -19,7 +19,7 @@ public class DefaultSqlConnectionFactory(IConfiguration configuration) : ISqlCon
{
get
{
string? fullConnectionString = configuration["DB_CONNECTION_STRING"];
string? fullConnectionString = configuration[ConfigurationKeys.DbConnectionString];
if (!string.IsNullOrEmpty(fullConnectionString))
return fullConnectionString;

View File

@@ -1,3 +1,4 @@
using Infrastructure.Configuration;
using Microsoft.Data.SqlClient;
using Microsoft.Extensions.Configuration;
@@ -14,9 +15,15 @@ public static class SqlConnectionStringHelper
) =>
new()
{
DataSource = ConfigurationHelpers.GetKeyOrThrow(configuration, "DB_SERVER"),
UserID = ConfigurationHelpers.GetKeyOrThrow(configuration, "DB_USER"),
Password = ConfigurationHelpers.GetKeyOrThrow(configuration, "DB_PASSWORD"),
DataSource = ConfigurationHelpers.GetKeyOrThrow(
configuration,
ConfigurationKeys.DbServer
),
UserID = ConfigurationHelpers.GetKeyOrThrow(configuration, ConfigurationKeys.DbUser),
Password = ConfigurationHelpers.GetKeyOrThrow(
configuration,
ConfigurationKeys.DbPassword
),
TrustServerCertificate = ResolveTrustServerCertificate(configuration),
Encrypt = true,
};
@@ -38,7 +45,10 @@ public static class SqlConnectionStringHelper
try
{
SqlConnectionStringBuilder builder = MakeConfiguredConnectionBuilder(configuration);
builder.InitialCatalog = ConfigurationHelpers.GetKeyOrThrow(configuration, "DB_NAME");
builder.InitialCatalog = ConfigurationHelpers.GetKeyOrThrow(
configuration,
ConfigurationKeys.DbName
);
connectionString = builder.ConnectionString;
return true;
}
@@ -95,7 +105,7 @@ public static class SqlConnectionStringHelper
private static bool ResolveTrustServerCertificate(IConfiguration configuration)
{
return !bool.TryParse(
configuration["DB_TRUST_SERVER_CERTIFICATE"],
configuration[ConfigurationKeys.DbTrustServerCertificate],
out bool trustServerCertificate
) || trustServerCertificate;
}

View File

@@ -19,6 +19,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Database\Database.Connection\Database.Connection.csproj" />
<ProjectReference Include="..\..\Infrastructure\Infrastructure.Configuration\Infrastructure.Configuration.csproj" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="scripts/**/*.sql" />

View File

@@ -1,4 +1,5 @@
using Database.Connection;
using Infrastructure.Configuration;
using Microsoft.Data.SqlClient;
using Microsoft.Extensions.Configuration;
@@ -21,7 +22,7 @@ internal static class Program
.Build();
bool clearDatabase = string.Equals(
configuration["CLEAR_DATABASE"],
configuration[ConfigurationKeys.ClearDatabase],
"true",
StringComparison.OrdinalIgnoreCase
);