提交 adcff298 编写于 作者: J James Lopez

fixed all issues - not doing bulk create.

上级 1fe8b7f6
...@@ -21,16 +21,12 @@ module Projects ...@@ -21,16 +21,12 @@ module Projects
private private
def propagate_projects_with_template def propagate_projects_with_template
offset = 0
loop do loop do
batch = project_ids_batch(offset) batch = project_ids_batch
bulk_create_from_template(batch) bulk_create_from_template(batch)
break if batch.size < BATCH_SIZE break if batch.size < BATCH_SIZE
offset += BATCH_SIZE
end end
end end
...@@ -44,7 +40,7 @@ module Projects ...@@ -44,7 +40,7 @@ module Projects
end end
end end
def project_ids_batch(offset) def project_ids_batch
Project.connection.execute( Project.connection.execute(
<<-SQL <<-SQL
SELECT id SELECT id
...@@ -55,7 +51,7 @@ module Projects ...@@ -55,7 +51,7 @@ module Projects
WHERE services.project_id = projects.id WHERE services.project_id = projects.id
AND services.type = '#{@template.type}' AND services.type = '#{@template.type}'
) )
LIMIT #{BATCH_SIZE} OFFSET #{offset} LIMIT #{BATCH_SIZE}
SQL SQL
).to_a.flatten ).to_a.flatten
end end
......
...@@ -66,5 +66,17 @@ describe Projects::PropagateService, services: true do ...@@ -66,5 +66,17 @@ describe Projects::PropagateService, services: true do
expect(service.properties).to eq(service_template.properties) expect(service.properties).to eq(service_template.properties)
end end
describe 'bulk update' do
it 'creates services for all projects' do
project_total = 5
stub_const 'Projects::PropagateService::BATCH_SIZE', 3
project_total.times { create(:empty_project) }
expect { described_class.propagate(service_template) }.
to change { Service.count }.by(project_total + 1)
end
end
end end
end end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册