using Serilog;
namespace SimpleAdmin.Api;
///
/// 为正式启动与集成测试提供统一的应用构建入口。
///
public static class SimpleAdminApiBootstrap
{
///
/// 创建并配置 API 应用构建器。
///
/// 启动参数。
/// 附加构建配置,主要供测试环境注入本地配置和测试服务器使用。
public static WebApplicationBuilder CreateBuilder(
string[] args,
Action? configureBuilder = null,
string? environmentName = null)
{
var builder = WebApplication.CreateSlimBuilder(new WebApplicationOptions
{
Args = args,
EnvironmentName = environmentName,
ApplicationName = typeof(SimpleAdminApiModule).Assembly.GetName().Name
});
configureBuilder?.Invoke(builder);
if (!builder.Configuration.GetValue("UseLocalConfigs"))
{
builder.Configuration.AddConsul("idwms/common", source => source.ReloadOnChange = true);
builder.Configuration.AddConsul("idwms/admin", source => source.ReloadOnChange = true);
}
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Configuration)
.CreateLogger();
builder.WebHost.UseUrls(builder.Configuration.GetSection("App:Urls").Get() ?? []);
builder.Host.UseAutofac().UseSerilog();
builder.Services.AddApplication();
return builder;
}
///
/// 根据构建器生成并初始化 WebApplication。
///
public static WebApplication BuildApplication(WebApplicationBuilder builder)
{
var app = builder.Build();
app.InitializeApplication();
return app;
}
}