using CareFix.Api.Ai;
using CareFix.Api.Options;
using Dapper;
using Microsoft.Extensions.Options;
namespace CareFix.Api.Infrastructure;
/// What a monitoring tool or an admin needs to know at a glance.
public sealed class HealthService(ControlDb db, AiUsageService usage, IOptions options)
{
/// Anonymous liveness check: is the service up and can it reach its own database?
public async Task<(bool Ok, object Body)> LivenessAsync(CancellationToken ct)
{
try
{
await using var c = await db.OpenAsync(ct);
await c.ExecuteScalarAsync("SELECT 1");
return (true, new { status = "ok", at = DateTime.UtcNow });
}
catch (Exception ex)
{
return (false, new { status = "down", reason = ex.GetType().Name, at = DateTime.UtcNow });
}
}
/// Full picture for admins: work in flight, agents, integration backlog, AI spend.
public async Task