From 6a988e63325086aa89e7c2f509cf881e5a7a4164 Mon Sep 17 00:00:00 2001 From: Xiaoming Hu Date: Thu, 8 May 2025 15:42:00 +0200 Subject: [PATCH 1/3] add rake task to update morpheus models --- lib/tasks/seek_upgrades.rake | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/tasks/seek_upgrades.rake b/lib/tasks/seek_upgrades.rake index 60f568af52..791eb05777 100644 --- a/lib/tasks/seek_upgrades.rake +++ b/lib/tasks/seek_upgrades.rake @@ -9,11 +9,14 @@ namespace :seek do task upgrade_version_tasks: %i[ environment db:seed:007_sample_attribute_types + db:seed:003_model_formats + db:seed:004_model_recommended_environments 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,22 @@ namespace :seek do end end + task(update_morpheus_model: [:environment]) do + puts "... updating morpheus model" + Model.all.each do |model| + next unless model.is_morpheus_supported? + 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 + model.save + model.update_column(:model_format_id, model.model_format_id) + model.update_column(:recommended_environment_id, model.recommended_environment_id) + end + end + task(add_policies_to_existing_sample_types: [:environment]) do puts '... Adding policies to existing sample types' counter = 0 From 01c426735b4feb6f8774d9c6e813174c0ae485aa Mon Sep 17 00:00:00 2001 From: Xiaoming Hu Date: Wed, 4 Jun 2025 12:46:01 +0200 Subject: [PATCH 2/3] update PR according to Copilot review --- lib/tasks/seek_upgrades.rake | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/tasks/seek_upgrades.rake b/lib/tasks/seek_upgrades.rake index 791eb05777..a3a3220648 100644 --- a/lib/tasks/seek_upgrades.rake +++ b/lib/tasks/seek_upgrades.rake @@ -8,9 +8,9 @@ namespace :seek do # these are the tasks required for this version upgrade task upgrade_version_tasks: %i[ environment - db:seed:007_sample_attribute_types 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 @@ -96,17 +96,21 @@ namespace :seek do task(update_morpheus_model: [:environment]) do puts "... updating morpheus model" - Model.all.each do |model| + Model.find_each do |model| next unless model.is_morpheus_supported? - 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') + 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 + puts "Error: #{e.message}. Ensure that the required 'Morpheus' records exist in the database." + abort("Aborting task due to missing 'Morpheus' records.") end model.save - model.update_column(:model_format_id, model.model_format_id) - model.update_column(:recommended_environment_id, model.recommended_environment_id) + model.update_columns(model_format_id: model.model_format_id, recommended_environment_id: model.recommended_environment_id) end end From 95c9e92e33e27daff4e0fc36102f62e9cb988eaa Mon Sep 17 00:00:00 2001 From: Xiaoming Hu Date: Wed, 4 Jun 2025 16:24:02 +0200 Subject: [PATCH 3/3] remove model.save to avoid timestamps being changed --- lib/tasks/seek_upgrades.rake | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/tasks/seek_upgrades.rake b/lib/tasks/seek_upgrades.rake index a3a3220648..0588294723 100644 --- a/lib/tasks/seek_upgrades.rake +++ b/lib/tasks/seek_upgrades.rake @@ -109,7 +109,6 @@ namespace :seek do puts "Error: #{e.message}. Ensure that the required 'Morpheus' records exist in the database." abort("Aborting task due to missing 'Morpheus' records.") end - model.save model.update_columns(model_format_id: model.model_format_id, recommended_environment_id: model.recommended_environment_id) end end