class GoodData::LCM2::CollectClientProjects

Constants

DESCRIPTION
PARAMS
RESULT_HEADER

Public Class Methods

call(params) click to toggle source
# File lib/gooddata/lcm/actions/collect_client_projects.rb, line 35
def call(params)
  client = params.gdc_gd_client

  domain = client.domain(params.organization) || fail("Invalid domain name specified - #{params.organization}")

  data_product = params.data_product
  all_segments = domain.segments(:all, data_product)

  segment_names = params.segments.map do |segment|
    segment.segment_id.downcase
  end

  segments = all_segments.select do |segment|
    segment_names.include?(segment.segment_id.downcase)
  end

  client_projects = ThreadSafe::Hash.new

  results = segments.pmap do |segment|
    segment.clients.map do |segment_client|
      project = segment_client.project

      res = {
        client_id: segment_client.client_id,
        project: project && project.pid
      }

      client_projects[segment_client.client_id] = {
        segment_client: segment_client,
        project: project
      }

      res
    end
  end

  {
    results: results.flatten,
    params: {
      client_projects: client_projects
    }
  }
end