Class: SoqlDashboard::SalesforceApiClient

Inherits:
Object
  • Object
show all
Defined in:
app/lib/soql_dashboard/salesforce_api_client.rb

Overview

rubocop:disable Metrics/ClassLength

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ SalesforceApiClient

Returns a new instance of SalesforceApiClient.



10
11
12
# File 'app/lib/soql_dashboard/salesforce_api_client.rb', line 10

def initialize(config)
  @config = config
end

Instance Method Details

#execute_query(query) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'app/lib/soql_dashboard/salesforce_api_client.rb', line 14

def execute_query(query)
  uri = build_query_uri(query)
  http = setup_http_connection(uri)
  request = create_request(uri)
  response = http.request(request)

  parse_response(response)
rescue StandardError => e
  handle_error(e)
end

#list_all_queryable_objectsObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/lib/soql_dashboard/salesforce_api_client.rb', line 25

def list_all_queryable_objects
  # Use describe_global to get all available objects
  describe_result = describe_global
  return describe_result if describe_result[:error]

  # Filter to only queryable objects
  queryable_objects = describe_result[:sobjects]&.select do |sobject|
    sobject["queryable"] == true
  end&.pluck("name") || []

  {
    total_size: queryable_objects.length,
    records: queryable_objects.map { |name| { "QualifiedApiName" => name } },
  }
end