using Microsoft.Extensions.Diagnostics.HealthChecks;
using ScadaLink.ConfigurationDatabase;
namespace ScadaLink.Host.Health;
///
/// Health check that verifies database connectivity for Central nodes.
///
public class DatabaseHealthCheck : IHealthCheck
{
private readonly ScadaLinkDbContext _dbContext;
public DatabaseHealthCheck(ScadaLinkDbContext dbContext)
{
_dbContext = dbContext;
}
public async Task CheckHealthAsync(
HealthCheckContext context,
CancellationToken cancellationToken = default)
{
try
{
var canConnect = await _dbContext.Database.CanConnectAsync(cancellationToken);
return canConnect
? HealthCheckResult.Healthy("Database connection is available.")
: HealthCheckResult.Unhealthy("Database connection failed.");
}
catch (Exception ex)
{
return HealthCheckResult.Unhealthy("Database connection failed.", ex);
}
}
}