28 lines
873 B
C#
28 lines
873 B
C#
namespace MinAttest.Api.Features.Health;
|
|
|
|
using MinAttest.Infrastructure.Data;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
public static class Health
|
|
{
|
|
public static RouteGroupBuilder MapHealth(this RouteGroupBuilder group)
|
|
{
|
|
group.MapGet("/health", GetHealth)
|
|
.WithName("Health")
|
|
.WithOpenApi();
|
|
return group;
|
|
}
|
|
|
|
private static async Task<IResult> GetHealth(AppDbContext db, CancellationToken ct)
|
|
{
|
|
var canConnect = await db.Database.CanConnectAsync(ct);
|
|
var payload = new
|
|
{
|
|
status = canConnect ? "OK" : "DEGRADED",
|
|
database = canConnect ? "Up" : "Down",
|
|
time = DateTimeOffset.UtcNow
|
|
};
|
|
return canConnect ? Results.Ok(payload) : Results.Json(payload, statusCode: StatusCodes.Status503ServiceUnavailable);
|
|
}
|
|
}
|