Files
Verspakketten-API/Lutra/Lutra.API/Program.cs
T

67 lines
1.9 KiB
C#

using Cortex.Mediator.DependencyInjection;
using Lutra.Application.Verspakketten;
using Lutra.Application.Interfaces;
using Lutra.Infrastructure.Sql;
using Microsoft.EntityFrameworkCore;
using Scalar.AspNetCore;
namespace Lutra.API
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowLocalDevelopment", policy =>
policy.SetIsOriginAllowed(origin =>
{
if (!Uri.TryCreate(origin, UriKind.Absolute, out var uri))
{
return false;
}
return uri.Host is "localhost" or "127.0.0.1" or "[::1]";
})
.AllowAnyHeader()
.AllowAnyMethod());
});
builder.Services.AddCortexMediator(
handlerAssemblyMarkerTypes: [typeof(Program), typeof(GetVerspakketten)],
options => options.AddDefaultBehaviors()
);
builder.Services.AddDbContext<ILutraDbContext, LutraDbContext>(options =>
options.UseNpgsql(builder.Configuration.GetConnectionString("LutraDb")));
builder.Services.AddControllers();
builder.Services.AddOpenApi();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
app.MapScalarApiReference();
app.MapGet("/", () => Results.Redirect("/scalar/v1")).ExcludeFromDescription();
}
app.UseHttpsRedirection();
app.UseCors("AllowLocalDevelopment");
app.UseAuthorization();
app.MapControllers();
app.Run();
}
}
}