class GoodData::LCM2::InitializeContinueOnErrorOption

Constants

DESCRIPTION
PARAMS

Public Class Methods

call(params) click to toggle source
# File lib/gooddata/lcm/actions/initialize_continue_on_error_option.rb, line 31
def call(params)
  project_mappings = ThreadSafe::Hash.new
  client_mappings = ThreadSafe::Hash.new
  continue_on_error = continue_on_error(params)

  if continue_on_error
    client = params.gdc_gd_client
    domain_name = params.organization || params.domain
    domain = client.domain(domain_name)
    data_product = params.data_product
    data_product_segments = domain.segments(:all, data_product)

    if params.segments_filter
      data_product_segments.select! do |segment|
        params.segments_filter.include?(segment.segment_id)
      end
    end

    data_product_segments.pmap do |segment|
      segment.clients.map do |segment_client|
        project = segment_client.project
        next unless project

        project_mappings[project.pid.to_sym] = {
          client_id: segment_client.client_id,
          segment_id: segment.segment_id
        }
        client_mappings[segment_client.client_id.to_sym] = {
          project_id: project.pid,
          segment_id: segment.segment_id
        }
      end
    end
  end

  {
    params: {
      collect_synced_status: continue_on_error,
      sync_failed_list: {
        project_client_mappings: project_mappings,
        client_project_mappings: client_mappings,
        failed_detailed_projects: [],
        failed_projects: [],
        failed_clients: [],
        failed_segments: []
      }
    }
  }
end
print_result(_params) click to toggle source