# NOTE: When changing this file make sure to also change reindex_elasticsearch.rake within profile publisher as well.

namespace :relationships do

desc 'Migrate relationships from related_object_tags to new Relationship model.'
task migrate: [:environment] do
  # First ensure indexes have been created for the Relationship model
  Relationship.create_indexes

  models = [AcademicProgram, AcademicSubject, Article, CustomProfile, Department, Event, ExternalArticle, Feature, GenericObject, Group, Medium, PageEdition, Person, School]

  models.each do |model|
    puts "\nMigrating relationships for #{model}"

    model.where({:related_object_tags.ne => []}).each do |item|

      models.each do |related_model|
        item.related_objects(related_model).each do |related_object|
          begin
            if Relationship.find_by_objects(item, related_object)
              print "~" # skip
            else
              if Relationship.new_from_objects(item, related_object).save
                print "." # create
              end
            end
          rescue Mongo::Error::OperationFailure => e
            puts "\nError saving relationship, probably a duplicate. #{e}"
          end
        end
      end
    end
  end

  puts "\nAll done!\n\n"
end

end