Class: Gzr::Commands::Dashboard::ImportLookml

Inherits:
Gzr::Command
  • Object
show all
Includes:
Dashboard
Defined in:
lib/gzr/commands/dashboard/import_lookml.rb

Instance Method Summary collapse

Methods included from Dashboard

#cat_dashboard, #create_dashboard, #create_dashboard_element, #create_dashboard_filter, #create_dashboard_layout, #delete_dashboard, #delete_dashboard_element, #delete_dashboard_filter, #delete_dashboard_layout, #get_all_dashboard_layout_components, #get_dashboard_layout, #import_lookml_dashboard, #query_dashboard, #search_dashboards_by_slug, #search_dashboards_by_title, #sync_lookml_dashboard, #trim_dashboard, #update_dashboard, #update_dashboard_element, #update_dashboard_filter, #update_dashboard_layout, #update_dashboard_layout_component

Methods included from Alert

#alert_notifications, #create_alert, #delete_alert, #follow_alert, #get_alert, #read_alert_notification, #search_alerts, #unfollow_alert, #update_alert, #update_alert_field

Methods inherited from Gzr::Command

#all_color_collections, #color_collection, #color_palette_lookup!, #create_merge_query, #create_query, #default_color_collection, #field_expressions_eval, #field_names, #find_color_palette_reference, #find_vis_config_reference, #get_auth, #get_user_by_id, #keys_to_keep, #keys_to_keep_internal, #merge_query, #pairs, #query, #render_csv, #rewrite_color_palette!, #run_inline_query, #update_color_palette!

Methods included from Session

#build_connection_hash, #login, #logout_all, #pastel, #read_token_data, #say_error, #say_ok, #say_warning, #sufficient_version?, #token_file, #update_auth, #with_session, #write_token_data

Constructor Details

#initialize(dashboard_id, target_folder_id, options) ⇒ ImportLookml

Returns a new instance of ImportLookml.



33
34
35
36
37
38
# File 'lib/gzr/commands/dashboard/import_lookml.rb', line 33

def initialize(dashboard_id, target_folder_id, options)
  super()
  @dashboard_id = dashboard_id
  @target_folder_id = target_folder_id
  @options = options
end

Instance Method Details

#execute(input: $stdin, output: $stdout) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/gzr/commands/dashboard/import_lookml.rb', line 40

def execute(input: $stdin, output: $stdout)
  say_warning("options: #{@options.inspect}", output: output) if @options[:debug]
  with_session do

    dash = query_dashboard(@dashboard_id)
    raise Gzr::CLI::Error, "Dashboard with id #{@dashboard_id} does not exist" unless dash

    matching_title = search_dashboards_by_title(dash[:title],@target_folder_id)
    if matching_title.empty? || matching_title.first[:deleted]
      matching_title = false
    end

    if matching_title && !(matching_title.first[:lookml_link_id] == @dashboard_id)
      raise Gzr::CLI::Error, "Dashboard #{dash[:title]} already exists in folder #{@target_folder_id}\nUse --force if you want to overwrite it" unless @options[:force]
      say_ok "Deleting existing dashboard #{matching_title.first[:id]} #{matching_title.first[:title]} in folder #{@target_folder_id}", output: output
      update_dashboard(matching_title.first[:id],{:deleted=>true})
    end

    if matching_title && (matching_title.first[:lookml_link_id] == @dashboard_id)
      raise Gzr::CLI::Error, "Linked Dashboard #{dash[:title]} already exists in folder #{@target_folder_id}\nUse --sync if you want to synchronize it" unless @options[:sync]
      say_ok "Syncing existing dashboard #{matching_title.first[:id]} #{matching_title.first[:title]} in folder #{@target_folder_id}", output: output
      output.puts sync_lookml_dashboard(@dashboard_id)
      return
    end

    new_dash = import_lookml_dashboard(@dashboard_id,@target_folder_id)

    if @options[:unlink]
      body = {}
      body[:lookml_link_id] = nil
      update_dashboard(new_dash[:id],body)
    end
    output.puts "Created user defined dashboard #{new_dash[:id]} in folder #{@target_folder_id}" unless @options[:plain]
    output.puts new_dash[:id] if @options[:plain]
  end
end