discourse/app/jobs/regular/feature_topic_users.rb

28 lines
673 B
Ruby

module Jobs
class FeatureTopicUsers < Jobs::Base
def execute(args)
topic_id = args[:topic_id]
raise Discourse::InvalidParameters.new(:topic_id) unless topic_id.present?
topic = Topic.find_by(id: topic_id)
# there are 3 cases here
# 1. topic was atomically nuked, this should be skipped
# 2. topic was deleted, this should be skipped
# 3. error an incorrect topic_id was sent
unless topic.present?
max_id = Topic.with_deleted.maximum(:id).to_i
raise Discourse::InvalidParameters.new(:topic_id) if max_id < topic_id
return
end
topic.feature_topic_users(args)
end
end
end