📄
src/Api/UploadJob.cs
using System; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Quartz; using Slopper.Domain; namespace Slopper.Api; public sealed class UploadJob(ILogger<UploadJob> logger, Uploader uploader) : IJob { public static JobKey Key { get; } = new(nameof(UploadJob)); public async Task Execute(IJobExecutionContext context) { var platform = context.MergedJobDataMap.GetString("platform") ?? throw new Exception("No platform defined for upload job."); logger.LogDebug("Running upload job for platform {Platform}", platform); await uploader.Upload(platform, context.CancellationToken); } } public static class UploadJobExtensions { extension(IServiceCollectionQuartzConfigurator quartz) { public IServiceCollectionQuartzConfigurator AddUploadJob() => quartz.AddJob<UploadJob>(UploadJob.Key, options => options.StoreDurably()); } }