diff --git a/API/ROLAC.API/Controllers/HealthController.cs b/API/ROLAC.API/Controllers/HealthController.cs new file mode 100644 index 0000000..09c3dc2 --- /dev/null +++ b/API/ROLAC.API/Controllers/HealthController.cs @@ -0,0 +1,29 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using ROLAC.API.Data; + +namespace ROLAC.API.Controllers; + +[ApiController] +[Route("api/health")] +[AllowAnonymous] +public class HealthController : ControllerBase +{ + private readonly AppDbContext _db; + public HealthController(AppDbContext db) => _db = db; + + [HttpGet] + public async Task Get(CancellationToken cancellationToken) + { + var canConnectToDatabase = await _db.Database.CanConnectAsync(cancellationToken); + + var payload = new + { + status = canConnectToDatabase ? "healthy" : "degraded", + database = canConnectToDatabase ? "up" : "down", + time = DateTimeOffset.UtcNow + }; + + return canConnectToDatabase ? Ok(payload) : StatusCode(503, payload); + } +}