From b5bd31eeecd8a945408caabc837abe163ea12162 Mon Sep 17 00:00:00 2001 From: ethax-ross Date: Tue, 1 Oct 2024 13:22:05 +0100 Subject: [PATCH] Optimise application lookup (#1750) Preload the matching applications in NPQ reg instead of finding on each iteration. --- app/services/migration/migrators/application.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/services/migration/migrators/application.rb b/app/services/migration/migrators/application.rb index 6ea26d1828..0649c2292a 100644 --- a/app/services/migration/migrators/application.rb +++ b/app/services/migration/migrators/application.rb @@ -54,8 +54,12 @@ def records_per_worker def call run_once { report_applications_not_in_ecf_as_failures } + applications_by_ecf_id = ::Application.where(ecf_id: self.class.ecf_npq_applications.pluck(:id)).index_by(&:ecf_id) + migrate(self.class.ecf_npq_applications) do |ecf_npq_application| - application = ::Application.find_by!(ecf_id: ecf_npq_application.id) + application = applications_by_ecf_id[ecf_npq_application.id] + + raise ActiveRecord::RecordNotFound, "Couldn't find Application" unless application ensure_relationships_are_consistent!(ecf_npq_application, application)