diff --git a/EnvelopeGenerator.Finalizer/Extensions.cs b/EnvelopeGenerator.Finalizer/Extensions.cs new file mode 100644 index 00000000..49c29e88 --- /dev/null +++ b/EnvelopeGenerator.Finalizer/Extensions.cs @@ -0,0 +1,35 @@ +using EnvelopeGenerator.Finalizer.Job; +using Quartz; + +namespace EnvelopeGenerator.Finalizer; + +public static class Extensions +{ + public static IServiceCollectionQuartzConfigurator ScheduleJobDefault(this IServiceCollectionQuartzConfigurator q, + string croneEpression) + where TJob : IJob + { + var name = $"{typeof(TJob).FullName}"; + var jobKey = new JobKey(name); + + return q.ScheduleJob(trigger => trigger + .WithIdentity(name + "-trigger") + .WithCronSchedule(croneEpression), + job => job.WithIdentity(jobKey) + ); + } + + public static IServiceCollectionQuartzConfigurator ScheduleJobDefault(this IServiceCollectionQuartzConfigurator q, + IConfiguration configuration) + where TJob : IJob + { + var expression = configuration[$"{nameof(TJob)}:CronExpression"]; + if (string.IsNullOrWhiteSpace(expression)) + throw new InvalidOperationException( + "Cron expression for the Worker job is not configured. " + + "Please provide a valid cron schedule in the configuration under " + + $"'{nameof(TJob)}:CronExpression'."); + + return q.ScheduleJobDefault(expression); + } +} \ No newline at end of file