Skip to content

Commit

Permalink
optimized migration by using update_all
Browse files Browse the repository at this point in the history
  • Loading branch information
yrudman committed Nov 14, 2019
1 parent d356240 commit c7bc1b4
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,13 @@ class MiqSet < ActiveRecord::Base; end

def up
say_with_time("Copying owner_id to group_id in miq_sets table for each dashboard assigned to group") do
MiqSet.where(:set_type => "MiqWidgetSet", :owner_type => "MiqGroup").find_each do |dashboard|
dashboard.update(:group_id => dashboard.owner_id)
end
MiqSet.where(:set_type => "MiqWidgetSet", :owner_type => "MiqGroup").update_all("group_id = owner_id")
end
end

def down
say_with_time("Nullifying group_id column in miw_sets table for each dashboard assigned to group") do
MiqSet.where(:set_type => "MiqWidgetSet", :owner_type => "MiqGroup").find_each do |dashboard|
dashboard.update(:group_id => nil)
end
MiqSet.where(:set_type => "MiqWidgetSet", :owner_type => "MiqGroup").update_all(:group_id => nil)
end
end
end
Original file line number Diff line number Diff line change
@@ -1,27 +1,31 @@
require_migration

describe CopyOwnerIdToGroupIdForDashboards do
let(:miq_set) { migration_stub(:MiqSet) }
let(:name) { "Hello Dashboard" }
let(:group_id) { 1 }
let(:miq_set) { migration_stub(:MiqSet) }
let(:name) { "Hello Dashboard" }
let(:group_id) { 1 }

migration_context :up do
it "Copying owner_id to group_id in miq_sets table for each dashboard assigned to group only" do
dashboard = miq_set.create!(:name => name, :set_type => "MiqWidgetSet", :owner_type => "MiqGroup", :owner_id => group_id)
policy_set = miq_set.create!(:name => name, :set_type => "MiqPolicySet", :owner_id => group_id)

migrate

expect(dashboard.reload.group_id).to eq(group_id)
expect(policy_set.reload.group_id).to be nil
end
end

migration_context :down do
it "Nullifying group_id column in miw_sets table for each dashboard assigned to group" do
dashboard = miq_set.create!(:name => name, :set_type => "MiqWidgetSet", :owner_type => "MiqGroup", :owner_id => group_id, :group_id => group_id)
it "Nullifying group_id column in miq_sets table for each dashboard assigned to group" do
dashboard = miq_set.create!(:name => name, :set_type => "MiqWidgetSet", :owner_type => "MiqGroup", :group_id => group_id)
policy_set = miq_set.create!(:name => name, :set_type => "MiqPolicySet", :group_id => group_id

migrate

expect(dashboard.reload.group_id).to be nil
expect(policy_set.reload.group_id).to eq(group_id)
end
end
end

0 comments on commit c7bc1b4

Please sign in to comment.