Files
Signal-Server/service/src/main/resources/lua/remove_item_by_guid.lua
2021-08-24 10:30:52 -05:00

29 lines
808 B
Lua

local queueKey = KEYS[1]
local queueMetadataKey = KEYS[2]
local queueTotalIndexKey = KEYS[3]
local removedMessages = {}
for _, guid in ipairs(ARGV) do
local messageId = redis.call("HGET", queueMetadataKey, guid)
if messageId then
local envelope = redis.call("ZRANGEBYSCORE", queueKey, messageId, messageId, "LIMIT", 0, 1)
redis.call("ZREMRANGEBYSCORE", queueKey, messageId, messageId)
redis.call("HDEL", queueMetadataKey, guid)
if envelope and next(envelope) then
removedMessages[#removedMessages + 1] = envelope[1]
end
end
end
if (redis.call("ZCARD", queueKey) == 0) then
redis.call("DEL", queueKey)
redis.call("DEL", queueMetadataKey)
redis.call("ZREM", queueTotalIndexKey, queueKey)
end
return removedMessages