Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Adapter.php
Go to the documentation of this file.
1 <?php
7 
13 
17 class Adapter implements AdapterInterface
18 {
24  protected $mapper;
25 
31  protected $responseFactory;
32 
36  protected $connectionManager;
37 
42 
46  private $queryContainerFactory;
47 
55  public function __construct(
59  AggregationBuilder $aggregationBuilder,
60  QueryContainerFactory $queryContainerFactory = null
61  ) {
62  $this->connectionManager = $connectionManager;
63  $this->mapper = $mapper;
64  $this->responseFactory = $responseFactory;
65  $this->aggregationBuilder = $aggregationBuilder;
66  $this->queryContainerFactory = $queryContainerFactory
67  ?: ObjectManager::getInstance()->get(QueryContainerFactory::class);
68  }
69 
74  public function query(RequestInterface $request)
75  {
76  $client = $this->connectionManager->getConnection();
78 
79  $query = $this->mapper->buildQuery($request);
80  $aggregationBuilder->setQuery($this->queryContainerFactory->create(['query' => $query]));
81  $rawResponse = $client->query($query);
82 
83  $rawDocuments = isset($rawResponse['hits']['hits']) ? $rawResponse['hits']['hits'] : [];
84 
85  $queryResponse = $this->responseFactory->create(
86  [
87  'documents' => $rawDocuments,
88  'aggregations' => $aggregationBuilder->build($request, $rawResponse),
89  ]
90  );
91  return $queryResponse;
92  }
93 }
__construct(ConnectionManager $connectionManager, Mapper $mapper, ResponseFactory $responseFactory, AggregationBuilder $aggregationBuilder, QueryContainerFactory $queryContainerFactory=null)
Definition: Adapter.php:55
query(RequestInterface $request)
Definition: Adapter.php:74