From ad5c07cc7672a3f7a7185310b1250763a5fef76b Mon Sep 17 00:00:00 2001 From: Rogger Valverde Date: Fri, 24 Jan 2025 08:02:10 -0600 Subject: [PATCH] feat(job-scheduler): save iteration count (#3018) --- src/classes/job-scheduler.ts | 1 + src/commands/addJobScheduler-6.lua | 2 +- src/commands/updateJobScheduler-7.lua | 1 + src/interfaces/job-scheduler-json.ts | 1 + tests/test_job_scheduler.ts | 3 +++ 5 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/classes/job-scheduler.ts b/src/classes/job-scheduler.ts index 1e7fe9e31a..bd8bdccec0 100644 --- a/src/classes/job-scheduler.ts +++ b/src/classes/job-scheduler.ts @@ -275,6 +275,7 @@ export class JobScheduler extends QueueBase { if (jobData) { return { key, + iterationCount: parseInt(jobData.ic) || null, name: jobData.name, endDate: parseInt(jobData.endDate) || null, tz: jobData.tz || null, diff --git a/src/commands/addJobScheduler-6.lua b/src/commands/addJobScheduler-6.lua index f13e09514d..7aec684fb0 100644 --- a/src/commands/addJobScheduler-6.lua +++ b/src/commands/addJobScheduler-6.lua @@ -76,7 +76,7 @@ local function storeRepeatableJob(schedulerId, schedulerKey, repeatKey, nextMill table.insert(optionalValues, templateData) end - rcall("HMSET", schedulerKey, "name", opts['name'], + rcall("HMSET", schedulerKey, "name", opts['name'], "ic", 1, unpack(optionalValues)) end diff --git a/src/commands/updateJobScheduler-7.lua b/src/commands/updateJobScheduler-7.lua index 326b63de25..864de3be8e 100644 --- a/src/commands/updateJobScheduler-7.lua +++ b/src/commands/updateJobScheduler-7.lua @@ -47,6 +47,7 @@ if prevMillis ~= false then local schedulerAttributes = rcall("HMGET", schedulerKey, "name", "data") rcall("ZADD", repeatKey, nextMillis, jobSchedulerId) + rcall("HINCRBY", schedulerKey, "ic", 1) local eventsKey = KEYS[5] local metaKey = KEYS[2] diff --git a/src/interfaces/job-scheduler-json.ts b/src/interfaces/job-scheduler-json.ts index 150d08873e..538d7c2178 100644 --- a/src/interfaces/job-scheduler-json.ts +++ b/src/interfaces/job-scheduler-json.ts @@ -9,6 +9,7 @@ export interface JobSchedulerJson { key: string; // key is actually the job scheduler id name: string; id?: string | null; + iterationCount?: number; endDate: number | null; tz: string | null; pattern: string | null; diff --git a/tests/test_job_scheduler.ts b/tests/test_job_scheduler.ts index 0918941573..f593c1d11d 100644 --- a/tests/test_job_scheduler.ts +++ b/tests/test_job_scheduler.ts @@ -408,6 +408,7 @@ describe('Job Scheduler', function () { expect(scheduler).to.deep.equal({ key: 'test', + iterationCount: 1, name: 'test', endDate: null, tz: null, @@ -750,6 +751,7 @@ describe('Job Scheduler', function () { expect(scheduler).to.deep.equal({ key: 'rrule', + iterationCount: 1, name: 'rrule', endDate: null, next: 1486481042000, @@ -1719,6 +1721,7 @@ describe('Job Scheduler', function () { expect(jobSchedulers[0]).to.deep.equal({ key: 'test', + iterationCount: 2, name: 'a', endDate: null, tz: 'Asia/Calcutta',