module ElasticGraph::GraphQL::Aggregation::Resolvers::RelayConnectionBuilder

def self.build_bucket(query, response)

def self.build_bucket(query, response)
oupings.to_h { |g| [g.key, nil] },
sponse.dig("hits", "total", "value") || 0
ations = query.computations.to_h do |computation|
aggregation_name: query.name), {"value" => computation.detail.empty_bucket_value}]
et_computations)
aggregations"] || {})

def self.build_from_buckets(query:, parent_queries:, schema_element_names:, field_path: [], &build_buckets)

def self.build_from_buckets(query:, parent_queries:, schema_element_names:, field_path: [], &build_buckets)
  GraphQL::Resolvers::RelayConnection::GenericAdapter.new(
    schema_element_names: schema_element_names,
    raw_nodes: raw_nodes_for(query, parent_queries, schema_element_names, field_path, &build_buckets),
    paginator: query.paginator,
    get_total_edge_count: -> {},
    to_sort_value: ->(node, decoded_cursor) do
      query.groupings.map do |grouping|
        DatastoreQuery::Paginator::SortValue.new(
          from_item: (_ = node).bucket.fetch("key").fetch(grouping.key),
          from_cursor: decoded_cursor.sort_values.fetch(grouping.key),
          sort_direction: :asc # we don't yet support any alternate sorting.
        )
      end
    end
  )
end

def self.build_from_search_response(query:, search_response:, schema_element_names:)

def self.build_from_search_response(query:, search_response:, schema_element_names:)
  build_from_buckets(query: query, parent_queries: [], schema_element_names: schema_element_names) do
    extract_buckets_from(search_response, for_query: query)
  end
end

def self.extract_buckets_from(search_response, for_query:)

def self.extract_buckets_from(search_response, for_query:)
_data.dig(
for_query, search_response.raw_data)]

def self.raw_nodes_for(query, parent_queries, schema_element_names, field_path)

def self.raw_nodes_for(query, parent_queries, schema_element_names, field_path)
r::SINGLETON` is a special case, so handle it here.
paginator.paginated_from_singleton_cursor?
t|
names: schema_element_names,
 parent_queries,

ld_path