Skip to content

Commit

Permalink
Make the BsRequestAction target nullification simpler
Browse files Browse the repository at this point in the history
We use left joins to make the script simpler and hopefully faster.
  • Loading branch information
danidoni committed Feb 6, 2025
1 parent 827c28f commit b8a1de0
Showing 1 changed file with 4 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,12 @@
class NullifyTargetsOnBsRequestActions < ActiveRecord::Migration[7.0]
# rubocop:disable Rails/SkipsModelValidations
def up
bs_request_actions = BsRequestAction.where('target_project_id IS NOT NULL AND target_package_id IS NULL')
bs_request_actions.in_batches do |batch|
batch.find_each do |action|
target_project = Project.find_by(name: action.target_project)
if target_project.nil?
action.update_columns(target_project_id: nil)
end
end
BsRequestAction.joins('LEFT JOIN projects ON bs_request_actions.target_project_id = projects.id WHERE bs_request_actions.target_project_id IS NOT NULL AND projects.id IS NULL').in_batches do |batch|
batch.update_all(target_project_id: nil)
end

bs_request_actions = BsRequestAction.where('target_project_id IS NOT NULL AND target_package_id IS NOT NULL')
bs_request_actions.in_batches do |batch|
batch.find_each do |action|
target_project = Project.find_by(name: action.target_project)
if target_project.nil?
action.update_columns(target_project_id: nil, target_package_id: nil)
next
end

target_package = Package.find_by_project_and_name(action.target_project, action.target_package)
if target_package.nil?
action.update_columns(target_package_id: nil)
end
end
BsRequestAction.joins('LEFT JOIN packages ON bs_request_actions.target_package_id = packages.id WHERE bs_request_actions.target_package_id IS NOT NULL AND packages.id IS NULL').in_batches do |batch|
batch.update_all(target_package_id: nil)
end
end
# rubocop:enable Rails/SkipsModelValidations
Expand Down

0 comments on commit b8a1de0

Please sign in to comment.