monkeytype/backend/redis-scripts/add-result-increment.lua
Bruce Berrios 87b89e0d57
Add weekly xp leaderboards backend (#3511) Bruception
* Add weekly seasons

* Fix test

* Add week timestamp tests

* Add unit tests

* Fix weeks before calculation

* Update user.spec.ts

* Remove minXp maxXp reward config

* Record total time typed + last activity timestamp

* Season -> Weekly XP Leaderboard

* prettier

* Add config hints

* Update leaderboard.ts

* monkeytype

Co-authored-by: Miodec <jack@monkeytype.com>
2022-11-28 14:10:02 +01:00

20 lines
699 B
Lua

local redis_call = redis.call
local leaderboard_scores_key, leaderboard_results_key = KEYS[1], KEYS[2]
local leaderboard_expiration_time = ARGV[1]
local user_id = ARGV[2]
local xp_gained = tonumber(ARGV[3])
local user_data = ARGV[4]
redis_call('ZINCRBY', leaderboard_scores_key, xp_gained, user_id)
redis_call('HSET', leaderboard_results_key, user_id, user_data)
local number_of_results = redis_call('ZCARD', leaderboard_scores_key)
if (number_of_results == 1) then
redis_call('EXPIREAT', leaderboard_scores_key, leaderboard_expiration_time)
redis_call('EXPIREAT', leaderboard_results_key, leaderboard_expiration_time)
end
return redis_call('ZREVRANK', leaderboard_scores_key, user_id)