mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-02-28 00:35:25 +08:00
* 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>
19 lines
699 B
Lua
19 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)
|