using Elsa.Workflows.Runtime.HealthChecks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Diagnostics.HealthChecks;
namespace Elsa.Extensions;
///
/// Adds Elsa workflow runtime readiness checks to ASP.NET Core health checks.
///
public static class HealthCheckExtensions
{
private static readonly string[] ReadinessTags = ["elsa", "readiness"];
///
/// Adds conservative Elsa-specific readiness probes for the workflow runtime and its core stores.
///
/// The health checks builder.
/// Whether to probe workflow management/runtime stores.
/// Whether to probe the configured distributed lock provider.
public static IHealthChecksBuilder AddElsaReadinessChecks(
this IHealthChecksBuilder builder,
bool includePersistence = true,
bool includeDistributedLocks = false)
{
builder.AddCheck("elsa-runtime", tags: ReadinessTags);
if (includePersistence)
builder.AddCheck("elsa-workflow-persistence", tags: ReadinessTags);
if (includeDistributedLocks)
builder.AddCheck("elsa-distributed-locks", tags: ReadinessTags);
return builder;
}
}