* flag local movies as file not found * show warning icon on cards * unflag movie that is found during scan * skip missing files when building playouts * add state to search index * add file not found health check * link to search from file not found health check * support flagging other media kinds as file not found * continue to schedule missing items * support episode files not found * wip trash page * fix trash url * trash page is functional * update changelog * fix changelog merge
42 lines
1.5 KiB
C#
42 lines
1.5 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using ErsatzTV.Core.Health;
|
|
using ErsatzTV.Core.Health.Checks;
|
|
using LanguageExt;
|
|
|
|
namespace ErsatzTV.Infrastructure.Health
|
|
{
|
|
public class HealthCheckService : IHealthCheckService
|
|
{
|
|
private readonly List<IHealthCheck> _checks;
|
|
|
|
// ReSharper disable SuggestBaseTypeForParameterInConstructor
|
|
public HealthCheckService(
|
|
IFFmpegVersionHealthCheck ffmpegVersionHealthCheck,
|
|
IFFmpegReportsHealthCheck ffmpegReportsHealthCheck,
|
|
IHardwareAccelerationHealthCheck hardwareAccelerationHealthCheck,
|
|
IMovieMetadataHealthCheck movieMetadataHealthCheck,
|
|
IEpisodeMetadataHealthCheck episodeMetadataHealthCheck,
|
|
IZeroDurationHealthCheck zeroDurationHealthCheck,
|
|
IFileNotFoundHealthCheck fileNotFoundHealthCheck,
|
|
IVaapiDriverHealthCheck vaapiDriverHealthCheck)
|
|
{
|
|
_checks = new List<IHealthCheck>
|
|
{
|
|
ffmpegVersionHealthCheck,
|
|
ffmpegReportsHealthCheck,
|
|
hardwareAccelerationHealthCheck,
|
|
movieMetadataHealthCheck,
|
|
episodeMetadataHealthCheck,
|
|
zeroDurationHealthCheck,
|
|
fileNotFoundHealthCheck,
|
|
vaapiDriverHealthCheck
|
|
};
|
|
}
|
|
|
|
public Task<List<HealthCheckResult>> PerformHealthChecks() =>
|
|
_checks.Map(c => c.Check()).SequenceParallel().Map(results => results.ToList());
|
|
}
|
|
}
|