You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
recyclarr/src/Recyclarr.Cli/Pipelines/MediaNaming/MediaNamingSyncPipeline.cs

48 lines
1.5 KiB

using Recyclarr.Cli.Console.Settings;
using Recyclarr.Cli.Pipelines.MediaNaming.PipelinePhases;
using Recyclarr.Config.Models;
namespace Recyclarr.Cli.Pipelines.MediaNaming;
public interface IMediaNamingPipelinePhases
{
MediaNamingConfigPhase ConfigPhase { get; }
MediaNamingPhaseLogger Logger { get; }
MediaNamingApiFetchPhase ApiFetchPhase { get; }
MediaNamingTransactionPhase TransactionPhase { get; }
MediaNamingPreviewPhase PreviewPhase { get; }
MediaNamingApiPersistencePhase ApiPersistencePhase { get; }
}
public class MediaNamingSyncPipeline : ISyncPipeline
{
private readonly IMediaNamingPipelinePhases _phases;
public MediaNamingSyncPipeline(IMediaNamingPipelinePhases phases)
{
_phases = phases;
}
public async Task Execute(ISyncSettings settings, IServiceConfiguration config)
{
var processedNaming = await _phases.ConfigPhase.Execute(config);
if (_phases.Logger.LogConfigPhaseAndExitIfNeeded(processedNaming))
{
return;
}
var serviceData = await _phases.ApiFetchPhase.Execute(config);
var transactions = _phases.TransactionPhase.Execute(serviceData, processedNaming);
if (settings.Preview)
{
_phases.PreviewPhase.Execute(transactions);
return;
}
await _phases.ApiPersistencePhase.Execute(config, transactions);
_phases.Logger.LogPersistenceResults(serviceData, transactions);
}
}