Sha256: 06997a755a39b444fffac17c022eeb84037b09a334b1ad341882d567f16ed8bb

Contents?: true

Size: 1.97 KB

Versions: 1

Compression:

Stored size: 1.97 KB

Contents

# encoding: UTF-8
#
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.

require_relative 'base_action'

module GoodData
  module LCM2
    # 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.
    class ApplyCustomMaql < BaseAction
      DESCRIPTION = 'Apply Custom MAQL DDL'

      PARAMS = define_params(self) do
        description 'Should be custom MAQL DDL Applied'
        param :apply_maql_ddl, instance_of(Type::BooleanType), required: false, default: false
      end

      RESULT_HEADER = [
        :segment,
        :maql,
        :status
      ]

      class << self
        def call(params)
          return [] unless params.apply_maql_ddl.to_b

          client = params.gdc_gd_client

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

          segment_ids = params.segments.map(&:segment_id)
          domain_segments = domain.segments.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
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gooddata-0.6.51 lib/gooddata/lcm/actions/apply_custom_maql.rb