docbrown/app/workers/moderator/sink_articles_worker.rb
2020-02-21 12:00:30 -05:00

20 lines
624 B
Ruby

module Moderator
class SinkArticlesWorker
include Sidekiq::Worker
sidekiq_options queue: :medium_priority, retry: 10
def perform(user_id)
user = User.find_by(id: user_id)
return unless user
articles = Article.where(user: user)
reactions = Reaction.where(reactable: articles)
new_score = reactions.sum(:points) + Reaction.where(reactable: user).sum(:points)
articles.update_all(score: new_score)
rescue StandardError => e
DatadogStatsClient.count("moderators.sink", 1, tags: ["action:failed", "user_id:#{user.id}"])
Honeybadger.notify(e)
end
end
end