Core.Blueprint.DAL/Core.Blueprint.DAL.API/Program.cs
2025-06-25 19:50:19 -06:00

101 lines
3.1 KiB
C#

using Core.Blueprint.DAL.API.Extensions;
using Core.Blueprint.DAL.Mongo.Configuration;
using Core.Blueprint.KeyVault.Configuration;
using Core.Blueprint.Logging.Configuration;
using Core.Blueprint.Redis.Configuration;
using Core.Blueprint.SQLServer.Configuration;
using Core.Blueprint.Storage.Configuration;
using Microsoft.AspNetCore.HttpLogging;
using System.Reflection;
using System.Text.Json.Serialization;
var builder = WebApplication.CreateBuilder(args);
//builder.Configuration.AddAzureAppConfiguration(options =>
//{
// var endpoint = builder.Configuration.GetSection("Endpoints:AppConfigurationURI").Value;
// if (string.IsNullOrEmpty(endpoint))
// throw new ArgumentException("The app configuration is missing");
// options.Connect(new Uri(endpoint), new DefaultAzureCredential())
// .Select(KeyFilter.Any, "blueprint_dal");
// options.ConfigureKeyVault(keyVaultOptions =>
// {
// keyVaultOptions.SetCredential(new DefaultAzureCredential());
// });
//});
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Configuration
.AddUserSecrets(Assembly.GetExecutingAssembly())
.AddEnvironmentVariables();
builder.Services.AddResponseCompression();
builder.Services.AddProblemDetails();
builder.Services.AddMemoryCache();
builder.Services.AddLogs(builder);
builder.Services.AddKeyVault(builder.Configuration);
builder.Services.AddBlobStorage(builder.Configuration);
builder.Services.AddRedis(builder.Configuration);
builder.Services.AddMongoLayer(builder.Configuration);
builder.Services.AddSQLServer(builder.Configuration);
builder.Services.AddDALLayerServices(builder.Configuration);
builder.Host.ConfigureServices((context, services) =>
{
services.AddLogging();
services.AddControllers();
services.AddProblemDetails();
services.AddCors(options
=> options.AddDefaultPolicy(policyBuilder
=> policyBuilder
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()));
builder.Services.Configure<Microsoft.AspNetCore.Http.Json.JsonOptions>(options =>
{
options.SerializerOptions.Converters.Add(new JsonStringEnumConverter());
});
services
.AddEndpointsApiExplorer()
.AddVersioning()
.AddSwagger();
services.AddHealthChecks();
services.AddHttpLogging(options => options.LoggingFields = HttpLoggingFields.All);
builder.Services.AddOutputCache(options =>
{
options.AddBasePolicy(builder =>
builder.Expire(TimeSpan.FromSeconds(10)));
options.AddPolicy("Expire20", builder =>
builder.Expire(TimeSpan.FromSeconds(20)));
options.AddPolicy("Expire30", builder =>
builder.Expire(TimeSpan.FromSeconds(30)));
});
});
var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI();
app.MapControllers();
app.UseCors();
app.ConfigureSwagger();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseResponseCompression();
app.UseOutputCache();
app.UseResponseCaching();
app.UseLogging(builder.Configuration);
app.MapHealthChecks("/health");
app.Run();