class Blazer::Adapters::SalesforceAdapter

Public Instance Methods

preview_statement() click to toggle source
# File lib/blazer/adapters/salesforce_adapter.rb, line 34
def preview_statement
  "SELECT Id FROM {table} LIMIT 10"
end
quoting() click to toggle source

developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_quotedstringescapes.htm

# File lib/blazer/adapters/salesforce_adapter.rb, line 39
def quoting
  :backslash_escape
end
run_statement(statement, comment) click to toggle source
# File lib/blazer/adapters/salesforce_adapter.rb, line 4
def run_statement(statement, comment)
  columns = []
  rows = []
  error = nil

  # remove comments manually
  statement = statement.gsub(/--.+/, "")
  # only supports single line /* */ comments
  # regex not perfect, but should be good enough
  statement = statement.gsub(/\/\*.+\*\//, "")

  # remove trailing semicolon
  statement = statement.sub(/;\s*\z/, "")

  begin
    response = client.query(statement)
    rows = response.map { |r| r.to_hash.except("attributes").values }
    columns = rows.any? ? response.first.to_hash.except("attributes").keys : []
  rescue => e
    error = e.message
  end

  [columns, rows, error]
end
tables() click to toggle source
# File lib/blazer/adapters/salesforce_adapter.rb, line 29
def tables
  # cache
  @tables ||= client.describe.select { |r| r.queryable }.map(&:name)
end

Protected Instance Methods

client() click to toggle source
# File lib/blazer/adapters/salesforce_adapter.rb, line 45
def client
  @client ||= Restforce.new
end