diff --git a/lib/tasks/seek_upgrades.rake b/lib/tasks/seek_upgrades.rake index 60f568af52..9217141570 100644 --- a/lib/tasks/seek_upgrades.rake +++ b/lib/tasks/seek_upgrades.rake @@ -8,12 +8,15 @@ namespace :seek do # these are the tasks required for this version upgrade task upgrade_version_tasks: %i[ environment + db:seed:003_model_formats + db:seed:004_model_recommended_environments db:seed:007_sample_attribute_types update_rdf update_observation_unit_policies fix_xlsx_marked_as_zip add_policies_to_existing_sample_types fix_previous_sample_type_permissions + update_morpheus_model ] # these are the tasks that are executes for each upgrade as standard, and rarely change @@ -91,6 +94,36 @@ namespace :seek do end end + task(update_morpheus_model: [:environment]) do + puts "... updating morpheus model" + affected_models = [] + errors = [] + Model.find_each do |model| + next unless model.is_morpheus_supported? + begin + unless model.model_format + model.model_format = ModelFormat.find_by!(title: 'Morpheus') + end + unless model.recommended_environment + model.recommended_environment = RecommendedModelEnvironment.find_by!(title: 'Morpheus') + end + rescue ActiveRecord::RecordNotFound => e + error_message = "Error: #{e.message}. Ensure that the required 'Morpheus' records exist in the database." + puts error_message + errors << error_message + next + end + model.update_columns(model_format_id: model.model_format_id, recommended_environment_id: model.recommended_environment_id) + affected_models << model + end + ReindexingQueue.enqueue(affected_models) + puts "... reindexing job triggered for #{affected_models.count} models" + unless errors.empty? + puts "The following errors were encountered during the update:" + errors.each { |error| puts error } + end + end + task(add_policies_to_existing_sample_types: [:environment]) do puts '... Adding policies to existing sample types' counter = 0