storeJob.lua 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. --[[
  2. Function to store a job
  3. ]]
  4. local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
  5. parentKey, parentData, repeatJobKey)
  6. local jsonOpts = cjson.encode(opts)
  7. local delay = opts['delay'] or 0
  8. local priority = opts['priority'] or 0
  9. local debounceId = opts['de'] and opts['de']['id']
  10. local optionalValues = {}
  11. if parentKey ~= nil then
  12. table.insert(optionalValues, "parentKey")
  13. table.insert(optionalValues, parentKey)
  14. table.insert(optionalValues, "parent")
  15. table.insert(optionalValues, parentData)
  16. end
  17. if repeatJobKey then
  18. table.insert(optionalValues, "rjk")
  19. table.insert(optionalValues, repeatJobKey)
  20. end
  21. if debounceId then
  22. table.insert(optionalValues, "deid")
  23. table.insert(optionalValues, debounceId)
  24. end
  25. rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
  26. "timestamp", timestamp, "delay", delay, "priority", priority,
  27. unpack(optionalValues))
  28. rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
  29. return delay, priority
  30. end