< Summary

Information
Class: Chronicis.Api.Services.HealthCheckServiceBase
Assembly: Chronicis.Api
File(s): /home/runner/work/chronicis/chronicis/src/Chronicis.Api/Services/HealthCheckServiceBase.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 29
Coverable lines: 29
Total lines: 53
Line coverage: 0%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
CheckHealthAsync()100%210%

File(s)

/home/runner/work/chronicis/chronicis/src/Chronicis.Api/Services/HealthCheckServiceBase.cs

#LineLine coverage
 1using System.Diagnostics;
 2using Chronicis.Shared.DTOs;
 3
 4namespace Chronicis.Api.Services;
 5
 6public abstract class HealthCheckServiceBase : IHealthCheckService
 7{
 8    private readonly ILogger _logger;
 9
 010    protected HealthCheckServiceBase(ILogger logger)
 11    {
 012        _logger = logger;
 013    }
 14
 15    public async Task<ServiceHealthDto> CheckHealthAsync(string serviceName, string serviceKey)
 16    {
 017        var stopwatch = Stopwatch.StartNew();
 018        var checkedAt = DateTime.UtcNow;
 19
 20        try
 21        {
 022            var (status, message) = await PerformHealthCheckAsync();
 023            stopwatch.Stop();
 24
 025            return new ServiceHealthDto
 026            {
 027                Name = serviceName,
 028                ServiceKey = serviceKey,
 029                Status = status,
 030                Message = message,
 031                ResponseTimeMs = stopwatch.Elapsed.TotalMilliseconds,
 032                CheckedAt = checkedAt
 033            };
 34        }
 035        catch (Exception ex)
 36        {
 037            stopwatch.Stop();
 038            _logger.LogError(ex, "Health check failed for {ServiceName}", serviceName);
 39
 040            return new ServiceHealthDto
 041            {
 042                Name = serviceName,
 043                ServiceKey = serviceKey,
 044                Status = HealthStatus.Unhealthy,
 045                Message = ex.Message,
 046                ResponseTimeMs = stopwatch.Elapsed.TotalMilliseconds,
 047                CheckedAt = checkedAt
 048            };
 49        }
 050    }
 51
 52    protected abstract Task<(string Status, string? Message)> PerformHealthCheckAsync();
 53}