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
