monkeytype/backend/redis-scripts/purge-results.lua
Bruce Berrios a3b3387f01
Purge from dailies (#3635) Bruception
* Purge from dailies

* Fix

* Migrate logic to lua script

* added test to pass coverage

* typo

* also purging user from daily lbs on personal bests clear

Co-authored-by: Miodec <jack@monkeytype.com>
2022-10-10 18:29:29 +02:00

24 lines
667 B
Lua

local redis_call = redis.call
local string_match = string.match
local user_id = ARGV[1]
local leaderboards_namespace = ARGV[2]
local current_cursor = '0'
local match_pattern = leaderboards_namespace .. '*'
repeat
local result = redis_call('SCAN', current_cursor, 'MATCH', match_pattern)
local next_cursor, matched_keys = result[1], result[2]
for _, key in ipairs(matched_keys) do
if (string_match(key, 'results')) then
redis_call('HDEL', key, user_id)
elseif (string_match(key, 'scores')) then
redis_call('ZREM', key, user_id)
end
end
current_cursor = next_cursor
until (current_cursor == '0')