removeJobScheduler-3.lua 914 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. --[[
  2. Removes a job scheduler and its next scheduled job.
  3. Input:
  4. KEYS[1] job schedulers key
  5. KEYS[2] delayed jobs key
  6. KEYS[3] events key
  7. ARGV[1] job scheduler id
  8. ARGV[2] prefix key
  9. Output:
  10. 0 - OK
  11. 1 - Missing repeat job
  12. Events:
  13. 'removed'
  14. ]]
  15. local rcall = redis.call
  16. -- Includes
  17. --- @include "includes/removeJobKeys"
  18. local jobSchedulerId = ARGV[1]
  19. local prefix = ARGV[2]
  20. local millis = rcall("ZSCORE", KEYS[1], jobSchedulerId)
  21. if millis then
  22. -- Delete next programmed job.
  23. local delayedJobId = "repeat:" .. jobSchedulerId .. ":" .. millis
  24. if(rcall("ZREM", KEYS[2], delayedJobId) == 1) then
  25. removeJobKeys(prefix .. delayedJobId)
  26. rcall("XADD", KEYS[3], "*", "event", "removed", "jobId", delayedJobId, "prev", "delayed")
  27. end
  28. end
  29. if(rcall("ZREM", KEYS[1], jobSchedulerId) == 1) then
  30. rcall("DEL", KEYS[1] .. ":" .. jobSchedulerId)
  31. return 0
  32. end
  33. return 1