| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | 
							- using System;
 
- using System.Threading;
 
- using System.Threading.Tasks;
 
- using Microsoft.EntityFrameworkCore;
 
- using Microsoft.Extensions.Diagnostics.HealthChecks;
 
- namespace Jellyfin.Server.HealthChecks;
 
- /// <summary>
 
- /// Implementation of the <see cref="DbContextHealthCheck{TContext}"/> for a <see cref="IDbContextFactory{TContext}"/>.
 
- /// </summary>
 
- /// <typeparam name="TContext">The type of database context.</typeparam>
 
- public class DbContextFactoryHealthCheck<TContext> : IHealthCheck
 
-     where TContext : DbContext
 
- {
 
-     private readonly IDbContextFactory<TContext> _dbContextFactory;
 
-     /// <summary>
 
-     /// Initializes a new instance of the <see cref="DbContextFactoryHealthCheck{TContext}"/> class.
 
-     /// </summary>
 
-     /// <param name="contextFactory">Instance of the <see cref="IDbContextFactory{TContext}"/> interface.</param>
 
-     public DbContextFactoryHealthCheck(IDbContextFactory<TContext> contextFactory)
 
-     {
 
-         _dbContextFactory = contextFactory;
 
-     }
 
-     /// <inheritdoc />
 
-     public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
 
-     {
 
-         ArgumentNullException.ThrowIfNull(context);
 
-         var dbContext = await _dbContextFactory.CreateDbContextAsync(cancellationToken).ConfigureAwait(false);
 
-         await using (dbContext.ConfigureAwait(false))
 
-         {
 
-             if (await dbContext.Database.CanConnectAsync(cancellationToken).ConfigureAwait(false))
 
-             {
 
-                 return HealthCheckResult.Healthy();
 
-             }
 
-         }
 
-         return HealthCheckResult.Unhealthy();
 
-     }
 
- }
 
 
  |