# frozen_string_literal: true

class AddDirectToQuestions < ActiveRecord::Migration[5.2]
  def change
    add_column :questions, :direct, :boolean, null: false, default: false

    # default all legacy questions to direct
    execute 'UPDATE questions SET direct = true;'

    # All questions where
    # - the author is not 'justask' (generated questions), and
    # - the question wasn't asked anonymously
    # can be direct or not.  This depends on if the question has more than one answer
    execute "
UPDATE questions
SET direct = (NOT (questions.answer_count > 1))
WHERE author_name <> 'justask'
   OR NOT author_is_anonymous;"

    # All questions which exist in at least more than one inbox are not direct
    execute "
UPDATE questions
SET direct = false
WHERE id IN (
    SELECT question_id FROM inboxes GROUP BY question_id HAVING count(question_id) > 1
);"
  end
end