feat: Add ProfileManager for automatic Hangfire job scheduling

- Create ProfileManager background service that polls database every 1 second
- Query active profiles with cron schedules via MediatR GetProfileQuery
- Auto-create/update Hangfire recurring jobs using IRecurringJobManager
- Jobs execute TriggeringDEXJobBatchCommand via IMediator dependency injection
- Add profile caching with schedule change detection to avoid redundant updates
- Create DtoExtensions with JobId() and ToJob() helper methods for profile-to-command conversion
This commit is contained in:
2026-07-12 00:04:13 +02:00
parent eb7adc741a
commit ad2ab741ff
2 changed files with 80 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
using ECMJobRunner.Application.Common.Dtos;
using ECMJobRunner.Application.DEXJob.Commands;
using MediatR;
namespace ECMJobRunner.WebCron.Extensions;
public static class DtoExtensions
{
public static string JobId(this CfgProfileDto profile)
{
return $"profile-{profile.Id}-{profile.ProfileName.Replace(' ', '_').ToLowerInvariant()}";
}
public static TriggeringDEXJobBatchCommand ToJob(this CfgProfileDto profile)
{
return new TriggeringDEXJobBatchCommand
{
ProfileId = profile.Id,
};
}
}