module Gzr::Attribute

Public Instance Methods

create_attribute(attr) click to toggle source
# File lib/gzr/modules/attribute.rb, line 69
def create_attribute(attr)
  data = nil
  begin
    data = @sdk.create_user_attribute(attr)
  rescue LookerSDK::Error => e
    say_error "Error creating user_attribute(#{JSON.pretty_generate(attr)})"
    say_error e.message
    raise
  end
  data
end
delete_user_attribute(id) click to toggle source
# File lib/gzr/modules/attribute.rb, line 93
def delete_user_attribute(id)
  data = nil
  begin
    data = @sdk.delete_user_attribute(id)
  rescue LookerSDK::Error => e
    say_error "Error deleting user_attribute(#{id})"
    say_error e.message
    raise
  end
  data
end
get_attribute_by_label(label, fields = nil) click to toggle source
# File lib/gzr/modules/attribute.rb, line 63
def get_attribute_by_label(label, fields = nil)
  data = query_all_user_attributes(fields).select {|a| a.label == label}
  return nil if data.empty?
  data.first
end
get_attribute_by_name(name, fields = nil) click to toggle source
# File lib/gzr/modules/attribute.rb, line 57
def get_attribute_by_name(name, fields = nil)
  data = query_all_user_attributes(fields).select {|a| a.name == name}
  return nil if data.empty?
  data.first
end
query_all_user_attribute_group_values(attr_id, fields=nil) click to toggle source
# File lib/gzr/modules/attribute.rb, line 105
def query_all_user_attribute_group_values(attr_id, fields=nil)
  begin
    req = {}
    req[:fields] = fields if fields
    return @sdk.all_user_attribute_group_values(attr_id,req)
  rescue LookerSDK::NotFound => e
    return nil
  rescue LookerSDK::Error => e
    say_error "Error querying all_user_attribute_group_values(#{attr_id},#{JSON.pretty_generate(req)})"
    say_error e.message
    raise
  end
end
query_all_user_attributes(fields=nil, sorts=nil) click to toggle source
# File lib/gzr/modules/attribute.rb, line 42
def query_all_user_attributes(fields=nil, sorts=nil)
  data = nil
  begin
    req = {}
    req[:fields] = fields if fields
    req[:sorts] = sorts if sorts
    data = @sdk.all_user_attributes(req)
  rescue LookerSDK::Error => e
    say_error "Error querying all_user_attributes(#{JSON.pretty_generate(req)})"
    say_error e.message
    raise
  end
  data
end
query_user_attribute(attr_id,fields=nil) click to toggle source
# File lib/gzr/modules/attribute.rb, line 26
def query_user_attribute(attr_id,fields=nil)
  data = nil
  begin
    req = {}
    req[:fields] = fields if fields
    data = @sdk.user_attribute(attr_id,req)
  rescue LookerSDK::NotFound => e
    # do nothing
  rescue LookerSDK::Error => e
    say_error "Error querying user_attribute(#{attr_id},#{JSON.pretty_generate(req)})"
    say_error e.message
    raise
  end
  data
end
query_user_attribute_group_value(group_id, attr_id) click to toggle source
# File lib/gzr/modules/attribute.rb, line 119
def query_user_attribute_group_value(group_id, attr_id)
  data = query_all_user_attribute_group_values(attr_id)&.select {|a| a.group_id == group_id}
  return nil if data.nil? || data.empty?
  data.first
end
update_attribute(id,attr) click to toggle source
# File lib/gzr/modules/attribute.rb, line 81
def update_attribute(id,attr)
  data = nil
  begin
    data = @sdk.update_user_attribute(id,attr)
  rescue LookerSDK::Error => e
    say_error "Error updating user_attribute(#{id},#{JSON.pretty_generate(attr)})"
    say_error e.message
    raise
  end
  data
end
upsert_user_attribute(source, force=false, output: $stdout) click to toggle source
# File lib/gzr/modules/attribute.rb, line 125
def upsert_user_attribute(source, force=false, output: $stdout)
  name_used = get_attribute_by_name(source[:name])
  if name_used
    raise(Gzr::CLI::Error, "Attribute #{source[:name]} already exists and can't be modified") if name_used[:is_system]
    raise(Gzr::CLI::Error, "Attribute #{source[:name]} already exists\nUse --force if you want to overwrite it") unless @options[:force]
  end

  label_used = get_attribute_by_label(source[:label])
  if label_used
    raise(Gzr::CLI::Error, "Attribute with label #{source[:label]} already exists and can't be modified") if label_used[:is_system]
    raise(Gzr::CLI::Error, "Attribute with label #{source[:label]} already exists\nUse --force if you want to overwrite it") unless force
  end

  existing = name_used || label_used
  if existing
    upd_attr = source.select do |k,v|
      keys_to_keep('update_user_attribute').include?(k) && !(name_used[k] == v)
    end

    return update_attribute(existing.id,upd_attr)
  else
    new_attr = source.select do |k,v|
      (keys_to_keep('create_user_attribute') - [:hidden_value_domain_whitelist]).include? k
    end
    new_attr[:hidden_value_domain_whitelist] = source[:hidden_value_domain_whitelist] if source[:value_is_hidden] && source[:hidden_value_domain_whitelist]

    return create_attribute(new_attr)
  end
end