30 lines
696 B
Ruby
30 lines
696 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Admin
|
|
module PropagateService
|
|
extend ActiveSupport::Concern
|
|
|
|
BATCH_SIZE = 10_000
|
|
|
|
class_methods do
|
|
def propagate(integration)
|
|
new(integration).propagate
|
|
end
|
|
end
|
|
|
|
def initialize(integration)
|
|
@integration = integration
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :integration
|
|
|
|
def create_integration_for_projects_without_integration
|
|
Project.without_integration(integration).each_batch(of: BATCH_SIZE) do |projects|
|
|
min_id, max_id = projects.pick("MIN(projects.id), MAX(projects.id)")
|
|
PropagateIntegrationProjectWorker.perform_async(integration.id, min_id, max_id)
|
|
end
|
|
end
|
|
end
|
|
end
|