< Summary

Information
Class: Chronicis.Api.Services.DatabaseHealthCheckService
Assembly: Chronicis.Api
File(s): /home/runner/work/chronicis/chronicis/src/Chronicis.Api/Services/DatabaseHealthCheckService.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 11
Coverable lines: 11
Total lines: 37
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 2
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
PerformHealthCheckAsync()0%620%

File(s)

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

#LineLine coverage
 1using Chronicis.Api.Data;
 2using Chronicis.Shared.DTOs;
 3using Microsoft.EntityFrameworkCore;
 4
 5namespace Chronicis.Api.Services;
 6
 7public class DatabaseHealthCheckService : HealthCheckServiceBase
 8{
 9    private readonly ChronicisDbContext _context;
 10
 11    public DatabaseHealthCheckService(ChronicisDbContext context, ILogger<DatabaseHealthCheckService> logger)
 012        : base(logger)
 13    {
 014        _context = context;
 015    }
 16
 17    protected override async Task<(string Status, string? Message)> PerformHealthCheckAsync()
 18    {
 019        var canConnect = await _context.Database.CanConnectAsync();
 20
 021        if (!canConnect)
 22        {
 023            return (HealthStatus.Unhealthy, "Cannot connect to database");
 24        }
 25
 26        // Optional: Try a simple query to verify deeper connectivity
 27        try
 28        {
 029            await _context.Database.ExecuteSqlRawAsync("SELECT 1");
 030            return (HealthStatus.Healthy, "Database connection successful");
 31        }
 032        catch (Exception ex)
 33        {
 034            return (HealthStatus.Degraded, $"Connected but query failed: {ex.Message}");
 35        }
 036    }
 37}