Class: GoodData::LCM2::ApplyCustomMaql
- Inherits:
-
BaseAction
- Object
- BaseAction
- GoodData::LCM2::ApplyCustomMaql
- Defined in:
- lib/gooddata/lcm/actions/apply_custom_maql.rb
Overview
Applies custom MAQL DDL to all client projects so customized labels and fiscal calendars are not deleted. To ease up further automation, the MAQL DDL may be stored in separate field in lcm_release table as we will need custom Release brick action which will populate it.
Constant Summary collapse
- DESCRIPTION =
'Apply Custom MAQL DDL'
- PARAMS =
define_params(self) do description 'Client Used for Connecting to GD' param :gdc_gd_client, instance_of(Type::GdClientType), required: true description 'Organization Name' param :organization, instance_of(Type::StringType), required: false description 'Segments to manage' param :segments, array_of(instance_of(Type::SegmentType)), required: true description 'Should be custom MAQL DDL Applied' param :apply_maql_ddl, instance_of(Type::BooleanType), required: false, default: false description 'Domain' param :domain, instance_of(Type::StringType), required: false description 'DataProduct to manage' param :data_product, instance_of(Type::GDDataProductType), required: false end
- RESULT_HEADER =
[ :segment, :maql, :status ]
Constants inherited from BaseAction
BaseAction::FAILED_CLIENTS, BaseAction::FAILED_PROJECTS, BaseAction::FAILED_SEGMENTS, BaseAction::SYNC_FAILED_LIST
Constants included from Dsl::Dsl
Dsl::Dsl::DEFAULT_OPTS, Dsl::Dsl::TYPES
Class Method Summary collapse
Methods inherited from BaseAction
add_failed_client, add_failed_project, add_failed_segment, add_new_clients_to_project_client_mapping, check_params, collect_synced_status, continue_on_error, print_result, process_failed_project, process_failed_projects, sync_failed_client, sync_failed_project, sync_failed_segment, without_check
Methods included from Dsl::Dsl
#define_params, #define_type, #process
Class Method Details
.call(params) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/gooddata/lcm/actions/apply_custom_maql.rb', line 52 def call(params) return [] unless params.apply_maql_ddl.to_b client = params.gdc_gd_client domain_name = params.organization || params.domain fail "Either organisation or domain has to be specified in params" unless domain_name domain = client.domain(domain_name) || fail("Invalid domain name specified - #{domain_name}") data_product = params.data_product segment_ids = params.segments.map(&:segment_id) domain_segments = domain.segments(:all, data_product).select do |ds| segment_ids.include?(ds.segment_id) end res = [] domain_segments.peach do |ds| maql = 'CREATE DATASET {dataset.quotes} VISUAL (TITLE "Stock Quotes Data");' unless maql.empty? ds.clients.peach do |dc| project = dc.project r = project.execute_maql(maql) item = { segment: ds.segment_id, maql: maql, status: r } res.push(item) end end end res end |