Projektstart
This commit is contained in:
84
backend/node_modules/bullmq/dist/cjs/commands/addRepeatableJob-2.lua
generated
vendored
Normal file
84
backend/node_modules/bullmq/dist/cjs/commands/addRepeatableJob-2.lua
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
--[[
|
||||
Adds a repeatable job
|
||||
|
||||
Input:
|
||||
KEYS[1] 'repeat' key
|
||||
KEYS[2] 'delayed' key
|
||||
|
||||
ARGV[1] next milliseconds
|
||||
ARGV[2] msgpacked options
|
||||
[1] name
|
||||
[2] tz?
|
||||
[3] pattern?
|
||||
[4] endDate?
|
||||
[5] every?
|
||||
ARGV[3] legacy custom key TODO: remove this logic in next breaking change
|
||||
ARGV[4] custom key
|
||||
ARGV[5] prefix key
|
||||
|
||||
Output:
|
||||
repeatableKey - OK
|
||||
]]
|
||||
local rcall = redis.call
|
||||
local repeatKey = KEYS[1]
|
||||
local delayedKey = KEYS[2]
|
||||
|
||||
local nextMillis = ARGV[1]
|
||||
local legacyCustomKey = ARGV[3]
|
||||
local customKey = ARGV[4]
|
||||
local prefixKey = ARGV[5]
|
||||
|
||||
-- Includes
|
||||
--- @include "includes/removeJob"
|
||||
|
||||
local function storeRepeatableJob(repeatKey, customKey, nextMillis, rawOpts)
|
||||
rcall("ZADD", repeatKey, nextMillis, customKey)
|
||||
local opts = cmsgpack.unpack(rawOpts)
|
||||
|
||||
local optionalValues = {}
|
||||
if opts['tz'] then
|
||||
table.insert(optionalValues, "tz")
|
||||
table.insert(optionalValues, opts['tz'])
|
||||
end
|
||||
|
||||
if opts['pattern'] then
|
||||
table.insert(optionalValues, "pattern")
|
||||
table.insert(optionalValues, opts['pattern'])
|
||||
end
|
||||
|
||||
if opts['endDate'] then
|
||||
table.insert(optionalValues, "endDate")
|
||||
table.insert(optionalValues, opts['endDate'])
|
||||
end
|
||||
|
||||
if opts['every'] then
|
||||
table.insert(optionalValues, "every")
|
||||
table.insert(optionalValues, opts['every'])
|
||||
end
|
||||
|
||||
rcall("HMSET", repeatKey .. ":" .. customKey, "name", opts['name'],
|
||||
unpack(optionalValues))
|
||||
|
||||
return customKey
|
||||
end
|
||||
|
||||
-- If we are overriding a repeatable job we must delete the delayed job for
|
||||
-- the next iteration.
|
||||
local prevMillis = rcall("ZSCORE", repeatKey, customKey)
|
||||
if prevMillis then
|
||||
local delayedJobId = "repeat:" .. customKey .. ":" .. prevMillis
|
||||
local nextDelayedJobId = repeatKey .. ":" .. customKey .. ":" .. nextMillis
|
||||
|
||||
if rcall("ZSCORE", delayedKey, delayedJobId)
|
||||
and rcall("EXISTS", nextDelayedJobId) ~= 1 then
|
||||
removeJob(delayedJobId, true, prefixKey, true --[[remove debounce key]])
|
||||
rcall("ZREM", delayedKey, delayedJobId)
|
||||
end
|
||||
end
|
||||
|
||||
-- Keep backwards compatibility with old repeatable jobs (<= 3.0.0)
|
||||
if rcall("ZSCORE", repeatKey, legacyCustomKey) ~= false then
|
||||
return storeRepeatableJob(repeatKey, legacyCustomKey, nextMillis, ARGV[2])
|
||||
end
|
||||
|
||||
return storeRepeatableJob(repeatKey, customKey, nextMillis, ARGV[2])
|
||||
Reference in New Issue
Block a user