require 'yaml'

class UpgradeFromAlchemyFerret < ActiveRecord::Migration

def up
  not_searchable_elements.each do |element|
    element['contents'].each do |content|
      next unless Alchemy::PgSearch.is_searchable_essence?(content)
      next if content['searchable'].nil?
      "Alchemy::#{content['type'].classify}".constantize
        .joins(content: :element)
        .where(alchemy_contents: {name: content['name']})
        .where(alchemy_elements: {name: element['name']})
        .update_all(searchable: false)
      say "Sets searchable to false for `#{content['name']}` contents of `#{element['name']}` elements."
    end
  end
end

private

def elements_yml
  @elements_yml ||= YAML.load_file Rails.root.join('config/alchemy/elements.yml')
end

def not_searchable_elements
  elements_yml.select do |element|
    next if !element['contents']
    element['contents'].any? { |content| content['searchable'] == false }
  end
end

end