using Microsoft.Extensions.Diagnostics.HealthChecks; using ZB.MOM.WW.ScadaBridge.ConfigurationDatabase; namespace ZB.MOM.WW.ScadaBridge.Host.Health; /// /// Health check that verifies database connectivity for Central nodes. /// public class DatabaseHealthCheck : IHealthCheck { private readonly ScadaBridgeDbContext _dbContext; /// /// Initializes a new . /// /// The EF Core database context used to test connectivity. public DatabaseHealthCheck(ScadaBridgeDbContext dbContext) { _dbContext = dbContext; } /// /// Checks database connectivity by attempting to open a connection. /// /// Health check context providing failure status information. /// Cancellation token for the check. 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); } } }