Option to disable/enable jobs

This commit is contained in:
Glax 2025-03-07 11:32:59 +01:00
parent bf332717a5
commit 5921e524a9
4 changed files with 9 additions and 4 deletions

View File

@ -212,6 +212,7 @@ public class JobController(PgsqlContext context) : Controller
return NotFound();
ret.RecurrenceMs = modifyJobRecord.RecurrenceMs ?? ret.RecurrenceMs;
ret.Enabled = modifyJobRecord.Enabled ?? ret.Enabled;
context.SaveChanges();
return new AcceptedResult(ret.JobId, ret);

View File

@ -1,3 +1,3 @@
namespace API;
public record ModifyJobRecord(ulong? RecurrenceMs);
public record ModifyJobRecord(ulong? RecurrenceMs, bool? Enabled);

View File

@ -26,6 +26,7 @@ public abstract class Job
[NotMapped]
public DateTime NextExecution => LastExecution.AddMilliseconds(RecurrenceMs);
public JobState state { get; internal set; } = JobState.Waiting;
public bool Enabled { get; internal set; } = true;
public Job(string jobId, JobType jobType, ulong recurrenceMs, Job? parentJob = null, ICollection<Job>? dependsOnJobs = null)
: this(jobId, jobType, recurrenceMs, parentJob?.JobId, dependsOnJobs?.Select(j => j.JobId).ToList())

View File

@ -69,18 +69,21 @@ public static class Tranga
Log.Info(TRANGA);
while (true)
{
List<Job> completedJobs = context.Jobs.Where(j => j.state >= JobState.Completed && j.state < JobState.Failed).ToList();
List<Job> completedJobs = context.Jobs.Where(j => j.state >= JobState.Completed).ToList();
foreach (Job job in completedJobs)
if (job.RecurrenceMs <= 0)
context.Jobs.Remove(job);
else
{
if (job.state >= JobState.Failed)
job.Enabled = false;
else
job.state = JobState.Waiting;
job.LastExecution = DateTime.UtcNow;
job.state = JobState.Waiting;
context.Jobs.Update(job);
}
List<Job> runJobs = context.Jobs.Where(j => j.state <= JobState.Running).ToList()
List<Job> runJobs = context.Jobs.Where(j => j.state <= JobState.Running && j.Enabled == true).ToList()
.Where(j => j.NextExecution < DateTime.UtcNow).ToList();
foreach (Job job in runJobs)
{