module Groonga::Client::Response::Drilldownable

Attributes

drilldowns[RW]

@return [::Array<Groonga::Client::Response::Select::Drilldown>,

       ::Hash<String, Groonga::Client::Response::Select::Drilldown>]
If labeled drilldowns are used or command version 3 or
later is used, `{"label1" => drilldown1, "label2" => drilldown2}`
is returned since 0.3.1.

Otherwise, `[drilldown1, drilldown2]` is returned.

Private Instance Methods

parse_drilldown(label, keys, raw_drilldown) click to toggle source
# File lib/groonga/client/response/drilldownable.rb, line 31
def parse_drilldown(label, keys, raw_drilldown)
  if raw_drilldown.is_a?(::Array)
    n_hits = raw_drilldown[0][0]
    raw_columns = raw_drilldown[1]
    raw_records = raw_drilldown[2..-1]
  else
    n_hits = raw_drilldown["n_hits"]
    raw_columns = raw_drilldown["columns"]
    raw_records = raw_drilldown["records"]
  end
  records = parse_records(raw_columns, raw_records)
  Drilldown.new(label,
                keys,
                n_hits,
                records,
                raw_columns,
                raw_records)
end
parse_drilldowns(keys, raw_drilldowns) click to toggle source
# File lib/groonga/client/response/drilldownable.rb, line 50
def parse_drilldowns(keys, raw_drilldowns)
  (raw_drilldowns || []).collect.with_index do |raw_drilldown, i|
    key = keys[i]
    parse_drilldown(key, [key], raw_drilldown)
  end
end
parse_labeled_drilldowns(labeled_drilldown_requests, raw_drilldowns) click to toggle source
# File lib/groonga/client/response/drilldownable.rb, line 57
def parse_labeled_drilldowns(labeled_drilldown_requests,
                             raw_drilldowns)
  drilldowns = {}
  (raw_drilldowns || {}).each do |label, raw_drilldown|
    labeled_drilldown_request = labeled_drilldown_requests[label]
    drilldowns[label] = parse_drilldown(label,
                                        labeled_drilldown_request.keys,
                                        raw_drilldown)
  end
  drilldowns
end