class GoodData::LCM2::CollectTaggedObjects
Constants
- DESCRIPTION
- PARAMS
Public Class Methods
call(params)
click to toggle source
# File lib/gooddata/lcm/actions/collect_tagged_objects.rb, line 36 def call(params) results = [] segments_to_tags = Helpers.segment_production_tags(params.segments) transfer_all = GoodData::Helpers.to_boolean(params.transfer_all) return results unless params.production_tags || params.production_tag || segments_to_tags.any? || transfer_all development_client = params.development_client synchronize = params.synchronize.pmap do |info| from = info.from from_project = development_client.projects(from) || fail("Invalid 'from' project specified - '#{from}'") segment_tags = segments_to_tags[info.segment] production_tags = Helpers.parse_production_tags(params.production_tags || params.production_tag, segment_tags) objects = [] if transfer_all vizs = MdObject.query('visualizationObject', MdObject, client: development_client, project: from_project) viz_widgets = MdObject.query('visualizationWidget', MdObject, client: development_client, project: from_project) theme = MdObject.query('theme', MdObject, client: development_client, project: from_project) objects = (from_project.reports.to_a + from_project.metrics.to_a + from_project.variables.to_a + vizs.to_a + viz_widgets.to_a + theme.to_a).map(&:uri) elsif production_tags.any? objects = from_project.find_by_tag(production_tags) end info[:transfer_uris] ||= [] info[:transfer_uris] += objects results += objects.map do |uri| { project: from, transfer_uri: uri } end info end { results: results, params: { synchronize: synchronize } } end