Class: ElasticGraph::GraphQL::Resolvers::RelayConnection::SearchResponseAdapterBuilder
- Inherits:
-
Object
- Object
- ElasticGraph::GraphQL::Resolvers::RelayConnection::SearchResponseAdapterBuilder
- Defined in:
- lib/elastic_graph/graphql/resolvers/relay_connection/search_response_adapter_builder.rb
Overview
Adapts an ‘DatastoreResponse::SearchResponse` to what the graphql gem expects for a relay connection.
Class Method Summary collapse
Class Method Details
.build_from(schema_element_names:, search_response:, query:) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/elastic_graph/graphql/resolvers/relay_connection/search_response_adapter_builder.rb', line 17 def self.build_from(schema_element_names:, search_response:, query:) document_paginator = query.document_paginator GenericAdapter.new( schema_element_names: schema_element_names, raw_nodes: search_response.to_a, paginator: document_paginator.paginator, get_total_edge_count: -> { search_response.total_document_count }, to_sort_value: ->(document, decoded_cursor) do (_ = document).sort.zip(decoded_cursor.sort_values.values, document_paginator.sort).map do |from_document, from_cursor, sort_clause| DatastoreQuery::Paginator::SortValue.new( from_item: from_document, from_cursor: from_cursor, sort_direction: sort_clause.values.first.fetch("order").to_sym ) end end ) end |