# 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 '../metadata' require_relative '../../core/rest' require_relative '../../mixins/is_folder' require_relative 'metadata' module GoodData class Folder < GoodData::MdObject include Mixin::IsFolder class << self # Method intended to get all objects of that type in a specified project # # @param options [Hash] the options hash # @option options [Boolean] :full if passed true the subclass can decide # to pull in full objects. This is desirable from the usability POV # but unfortunately has negative impact on performance so it is not # the default. # @return [Array | Array] Return the appropriate metadata objects or their representation def all(options = { :client => GoodData.connection, :project => GoodData.project }) query('folder', Folder, options) end def create(opts) title = opts[:title] summary = opts[:summary] || '' type = opts[:type] || 'fact' folder = { 'folder' => { 'content' => { 'type' => Array(type) }, 'meta' => { 'tags' => '', 'summary' => summary, 'title' => title } } } client, project = GoodData.get_client_and_project(opts) client.create(Folder, folder, project: project) end end def entries (json['folder']['content']['entries'] || []).pmap do |entry| res = case json['folder']['content']['type'].first when 'fact' GoodData::Fact[entry['link'], :client => client, :project => project] when 'metric' GoodData::Metric[entry['link'], :client => client, :project => project] else GoodData::MdObject[entry['link'], :client => client, :project => project] end res end end def type json['folder']['content']['type'][0] end end end