class GoodData::LCM2::ApplyCustomMaql

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.

Constants

DESCRIPTION
PARAMS
RESULT_HEADER

Public Class Methods

call(params) click to toggle source
# 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