24 lines
896 B
C#
24 lines
896 B
C#
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
|
|
|
public sealed class EncounterReplicaReadyCheck : IHealthCheck
|
|
{
|
|
private readonly GatewayDbContext _db;
|
|
|
|
public EncounterReplicaReadyCheck(GatewayDbContext db) => _db = db;
|
|
|
|
public async Task<HealthCheckResult> CheckHealthAsync(
|
|
HealthCheckContext context, CancellationToken ct = default)
|
|
{
|
|
var encounterCount = await _db.Encounters.CountAsync(ct);
|
|
if (encounterCount > 0)
|
|
return HealthCheckResult.Healthy("Replica data available.");
|
|
|
|
var state = await _db.SyncState.FirstOrDefaultAsync(ct);
|
|
if (state?.InitialSyncCompleted == true)
|
|
return HealthCheckResult.Healthy("Initial sync completed.");
|
|
|
|
return HealthCheckResult.Unhealthy(
|
|
"No encounter replica data — first boot requires central sync.");
|
|
}
|
|
} |