mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-06-19 05:13:38 +08:00
20 lines
636 B
Ruby
Vendored
20 lines
636 B
Ruby
Vendored
# frozen_string_literal: true
|
|
|
|
module Jobs
|
|
class GenerateLeaderboardPositions < ::Jobs::Base
|
|
def execute(args)
|
|
leaderboard_id = args[:leaderboard_id]
|
|
raise Discourse::InvalidParameters.new(:leaderboard_id) if leaderboard_id.blank?
|
|
|
|
DistributedMutex.synchronize(
|
|
"gamification_generate_leaderboard_positions_#{leaderboard_id}",
|
|
validity: 5.minutes,
|
|
) do
|
|
leaderboard = DiscourseGamification::GamificationLeaderboard.find_by(id: leaderboard_id)
|
|
return unless leaderboard
|
|
|
|
DiscourseGamification::LeaderboardCachedView.new(leaderboard).create
|
|
end
|
|
end
|
|
end
|
|
end
|