35 lines
913 B
Lua
35 lines
913 B
Lua
local key = tostring(KEYS[1]);
|
|
local status = tostring(ARGV[1]);
|
|
local timestamp = tonumber(ARGV[2]);
|
|
|
|
-- increment the status counter
|
|
redis.call('HINCRBY', key, status, 1);
|
|
|
|
if (status == "imported" or status == "failed") then
|
|
-- get the current metrics
|
|
local bulk = redis.call('HGETALL', key);
|
|
-- get the total, imported and failed counters
|
|
local result = {}
|
|
local nextkey
|
|
for i, v in ipairs(bulk) do
|
|
if i % 2 == 1 then
|
|
nextkey = v
|
|
else
|
|
result[nextkey] = v
|
|
end
|
|
end
|
|
|
|
local imported = tonumber(result['imported']) or 0;
|
|
local failed = tonumber(result['failed']) or 0;
|
|
local total = tonumber(result['total']) or 0;
|
|
local state = tonumber(result['state']) or 0;
|
|
if (state == 0 and imported + failed >= total) then
|
|
-- all the records have been processed
|
|
-- update the metrics
|
|
redis.call('HSET', key, 'end_time', timestamp, 'state', 1);
|
|
return 1
|
|
end
|
|
end
|
|
|
|
return 0;
|