class QuestionWorker
  include Sidekiq::Worker

  sidekiq_options queue: :question, retry: false

  # @param rcpt [String] recipient
  # @param user_id [Integer] user id passed from Devise
  # @param question_id [Integer] newly created question id
  def perform(rcpt, user_id, question_id)
    begin
      user = User.find(user_id)
      if rcpt == 'followers'
        user.followers.each do |f|
          Inbox.create(user_id: f.id, question_id: question_id, new: true)
        end
      elsif rcpt.start_with? 'grp:'
        user.groups.find_by_name!(rcpt.sub 'grp:', '').members.each do |m|
          Inbox.create(user_id: m.user.id, question_id: question_id, new: true)
        end
      else
        logger.info "unknown rcpt #{rcpt}"
      end
    rescue => e
      logger.info "failed to ask question: #{e.message}"
      NewRelic::Agent.notice_error(e)
    end
  end
end