using static LiteCharms.Features.Extensions.Quartz; namespace LiteCharms.Features.TechShop.HealthChecks; public class ShopQuartzHealthCheck(ISchedulerFactory schedulerFactory) : IHealthCheck { public async Task CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default) { try { var scheduler = await schedulerFactory.GetScheduler(TechShopSchedulerName, cancellationToken); if(scheduler == null) return HealthCheckResult.Unhealthy($"Scheduler with name '{TechShopSchedulerName}' not found."); if (!scheduler.IsStarted) return HealthCheckResult.Unhealthy($"{TechShopSchedulerName} Quartz scheduler is not running"); await scheduler.CheckExists(new JobKey(Guid.NewGuid().ToString()), cancellationToken); return HealthCheckResult.Healthy($"{TechShopSchedulerName} Quartz scheduler is ready"); } catch (SchedulerException) { return HealthCheckResult.Unhealthy($"{TechShopSchedulerName} Quartz scheduler cannot connect to the store"); } } }