Add configuration type binding and implement database connection, disable NativeAOT.
Add: binding setting file items to `AppSettings` class so to provide DI access as `IOptions<OptixServeSettings>`. Add: EF Core and DbContext to access database in services. This results in disabling NativeAOT due to poor supports for *pre-compiled query*, however many design are optimized for AOT for later re-adoption. Add: `DesignTimeDbContextFactory` to support EF Core migrations in NativeAOT. (Kept for re-enabling AOT.) Add: `DbInitializer` for ensuring database connecting in startup. Add: `ConfigurationHelper.CreateDefaultBuilder()` to read configuration files in default locations. Note this method is currently ONLY used by `DesignTimeDbContextFactory`. Refactor is expected. Add: `CommonErrorDto` for simple error message. Add: `VersionEndpoint` ONLY for debugging and testing purpose. Verylikely to be removed in the future. Other: many utilities and fixes easy to understand. Note: EF Core migrations are excluded in the early development. Not expected to be added in version control before v1.0 beta.
This commit is contained in:
27
OptixServe.Api/Configuration/ConfigurationHelper.cs
Normal file
27
OptixServe.Api/Configuration/ConfigurationHelper.cs
Normal file
@ -0,0 +1,27 @@
|
||||
using System;
|
||||
|
||||
namespace OptixServe.Api.Configuration;
|
||||
|
||||
public static class ConfigurationHelper
|
||||
{
|
||||
public static IConfigurationBuilder CreateDefaultBuilder()
|
||||
{
|
||||
var aspEnv = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
|
||||
var netEnv = Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT");
|
||||
// Console.WriteLine($"ASPNETCORE_ENVIRONMENT: {aspEnv}, DOTNET_ENVIRONMENT: {netEnv}");
|
||||
var env = aspEnv ?? netEnv ?? null;
|
||||
|
||||
var builder = new ConfigurationBuilder()
|
||||
.SetBasePath(Directory.GetCurrentDirectory())
|
||||
.AddJsonFile("appsettings.json", optional: true)
|
||||
.AddJsonFile("config.json", optional: true);
|
||||
|
||||
if (env != null)
|
||||
{
|
||||
builder.AddJsonFile($"appsettings.{env}.json", optional: true)
|
||||
.AddJsonFile($"config.{env}.json", optional: true);
|
||||
}
|
||||
|
||||
return builder;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user