Repository URL to install this package:
|
Version:
2.2.0 ▾
|
require_relative 'rpc/query/query_twirp'
class Namara
def query(query_statement)
payload = { statement: query_statement }
response = rpc_request(query_client) do |client|
client.query(payload, rpc_headers)
end
build_result_set(response.data)
end
private
def build_result_set(data)
ObjectToHash.deep_ostruct({
metadata: build_metadata_set(data.column_metadata),
rows: build_data_set(data.rows, data.column_metadata)
})
end
# Converts each row to a hash with column names as keys and cells as values.
def build_data_set(rows, column_metadata)
rows.map do |r|
row = {}
r.cells.each_with_index { |c, i| row[column_metadata[i].key] = c }
row
end
end
# Takes an array of metadata hashes and maps each column name to
# the metadata hash.
def build_metadata_set(column_metadata)
metadata = {}
column_metadata.each { |m| metadata[m.key] = m }
metadata
end
def query_client
@query_client ||= Query::QueryServiceClient.new(api_url)
end
end