class GoodData::MandatoryUserFilter

Public Class Methods

[](id, options = { client: GoodData.connection, project: GoodData.project }) click to toggle source
Calls superclass method
# File lib/gooddata/models/user_filters/mandatory_user_filter.rb, line 12
def [](id, options = { client: GoodData.connection, project: GoodData.project })
  if id == :all
    all(options)
  else
    super
  end
end
all(options = { client: GoodData.connection, project: GoodData.project }) click to toggle source
# File lib/gooddata/models/user_filters/mandatory_user_filter.rb, line 20
def all(options = { client: GoodData.connection, project: GoodData.project })
  c = client(options)
  project = options[:project]
  filters = query('userFilter', nil, options)
  count = 1_000
  offset = 0
  user_lookup = {}
  loop do
    result = c.get("/gdc/md/#{project.pid}/userfilters?count=#{count}&offset=#{offset}")
    result['userFilters']['items'].each do |item|
      item['userFilters'].each do |f|
        user_lookup[f] = user_lookup[f] ? Array(user_lookup[f]).concat([item['user']]) : item['user']
      end
    end
    break if result['userFilters']['length'] < offset
    offset += count
  end
  mufs = filters.map do |filter_data|
    payload = {
      'expression' => filter_data['userFilter']['content']['expression'],
      'related' => user_lookup[filter_data['userFilter']['meta']['uri']],
      'level' => :user,
      'type'  => :filter,
      'uri'   => filter_data['userFilter']['meta']['uri']
    }
    c.create(GoodData::MandatoryUserFilter, payload, project: project)
  end
  mufs.enum_for
end
count(options = { client: GoodData.connection, project: GoodData.project }) click to toggle source
# File lib/gooddata/models/user_filters/mandatory_user_filter.rb, line 50
def count(options = { client: GoodData.connection, project: GoodData.project })
  c = client(options)
  project = options[:project]
  c.get(project.md['query'] + '/userfilters/')['query']['entries'].count
end

Public Instance Methods

save() click to toggle source

Creates or updates the mandatory user filter on the server

@return [GoodData::MandatoryUserFilter]

# File lib/gooddata/models/user_filters/mandatory_user_filter.rb, line 60
def save
  data = {
    'userFilter' => {
      'content' => {
        'expression' => expression
      },
      'meta' => {
        'category' => 'userFilter',
        'title' => related_uri
      }
    }
  }
  res = client.post(project.md['obj'], data)
  @json[:uri] = res['uri']
end