More AI changes

This commit is contained in:
moarten
2026-04-09 22:35:54 +02:00
parent 569cfbb85d
commit 87d15b99ed
24 changed files with 973 additions and 20 deletions

View File

@@ -1,14 +1,22 @@
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc;
namespace Lutra.API.Controllers;
/// <summary>
/// Exposes a lightweight health check for the API.
/// </summary>
[ApiController]
[Route("health")]
public class HealthController : Controller
[Produces("application/json")]
[ProducesResponseType(StatusCodes.Status200OK)]
public class HealthController : ControllerBase
{
/// <summary>
/// Returns the API health status.
/// </summary>
[HttpGet]
public IActionResult Index()
{
return Ok();
}
}
}

View File

@@ -0,0 +1,32 @@
using Cortex.Mediator;
using Lutra.Application.Supermarkten;
using Lutra.Application.Verspakketten;
using Microsoft.AspNetCore.Mvc;
namespace Lutra.API.Controllers;
/// <summary>
/// Provides a dedicated endpoint group for Supermarkt-related operations.
/// </summary>
/// <remarks>
/// This controller is intentionally empty for now. Endpoints will be added when the Supermarkt
/// use cases are implemented.
/// </remarks>
[ApiController]
[Route("api/supermarkten")]
[Produces("application/json")]
public class SupermarktenController(IMediator mediator) : ControllerBase
{
/// <summary>
/// Gets a page of supermarkten.
/// </summary>
/// <param name="skip">The number of items to skip.</param>
/// <param name="take">The maximum number of items to return.</param>
/// <returns>The requested verspakket page.</returns>
[HttpGet]
[ProducesResponseType(typeof(GetSupermarkten.Response), StatusCodes.Status200OK)]
public async Task<GetSupermarkten.Response> Get(int skip = 0, int take = 50)
{
return await mediator.SendQueryAsync<GetSupermarkten.Query, GetSupermarkten.Response>(new GetSupermarkten.Query(skip, take));
}
}

View File

@@ -4,14 +4,25 @@ using Microsoft.AspNetCore.Mvc;
namespace Lutra.API.Controllers
{
/// <summary>
/// Provides read-only access to verspakket resources.
/// </summary>
[ApiController]
[Route("api/verspakketten")]
[Produces("application/json")]
public class VerspakkettenController(IMediator mediator) : ControllerBase
{
/// <summary>
/// Gets a page of verspakketten.
/// </summary>
/// <param name="skip">The number of items to skip.</param>
/// <param name="take">The maximum number of items to return.</param>
/// <returns>The requested verspakket page.</returns>
[HttpGet]
public async Task<GetVerspakketten.Response> GetAll(int skip = 0, int take = 50)
[ProducesResponseType(typeof(GetVerspakketten.Response), StatusCodes.Status200OK)]
public async Task<GetVerspakketten.Response> Get(int skip = 0, int take = 50)
{
return await mediator.SendQueryAsync<GetVerspakketten.Query, GetVerspakketten.Response>(new GetVerspakketten.Query(skip, take));
}
}
}
}

View File

@@ -1,9 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591</NoWarn>
<UserSecretsId>c9bd54b0-d347-4e93-bcea-ed5e98a71d5c</UserSecretsId>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
@@ -16,6 +18,7 @@
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.23.0" />
<PackageReference Include="Scalar.AspNetCore" Version="2.13.20" />
<ProjectReference Include="..\Lutra.Infrastructure\Lutra.Infrastructure.Sql.csproj" />
</ItemGroup>
@@ -23,4 +26,4 @@
<ProjectReference Include="..\Lutra.Application\Lutra.Application.csproj" />
</ItemGroup>
</Project>
</Project>

View File

@@ -4,6 +4,7 @@ using Lutra.Application.Verspakketten;
using Lutra.Application.Interfaces;
using Lutra.Infrastructure.Sql;
using Microsoft.EntityFrameworkCore;
using Scalar.AspNetCore;
namespace Lutra.API
{
@@ -22,16 +23,16 @@ namespace Lutra.API
options.UseNpgsql(builder.Configuration.GetConnectionString("LutraDb")));
builder.Services.AddControllers();
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
builder.Services.AddOpenApi();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
app.MapScalarApiReference();
app.MapGet("/", () => Results.Redirect("/scalar/v1")).ExcludeFromDescription();
}
app.UseHttpsRedirection();