22 private $objectManager;
59 $this->binder = $binder;
60 $this->cleaner = $cleaner;
71 $this->data[
'requestName'] = $requestName;
83 $this->data[
'size'] =
$size;
95 $this->data[
'from'] =
$from;
121 $this->data[
'placeholder'][
'$' . $placeholder .
'$'] =
$value;
130 public function create()
132 if (!isset($this->data[
'requestName'])) {
133 throw new \InvalidArgumentException(
"Request name not defined.");
135 $requestName = $this->data[
'requestName'];
137 $data = $this->config->get($requestName);
138 if ($data ===
null) {
139 throw new NonExistingRequestNameException(
new Phrase(
"Request name '%1' doesn't exist.", [$requestName]));
142 $data = $this->binder->bind($data, $this->data);
143 $data = $this->cleaner->clean($data);
147 return $this->convert($data);
155 private function clear()
169 private function convert($data)
172 $mapper = $this->objectManager->create(
173 \
Magento\Framework\Search\Request\Mapper::class,
175 'objectManager' => $this->objectManager,
176 'rootQueryName' => $data[
'query'],
177 'queries' => $data[
'queries'],
178 'aggregations' => $data[
'aggregations'],
179 'filters' => $data[
'filters']
182 return $this->objectManager->create(
183 \
Magento\Framework\Search\Request::class,
185 'name' => $data[
'query'],
186 'indexName' => $data[
'index'],
187 'from' => $data[
'from'],
188 'size' => $data[
'size'],
189 'query' => $mapper->getRootQuery(),
190 'dimensions' => $this->buildDimensions(isset($data[
'dimensions']) ? $data[
'dimensions'] : []),
191 'buckets' => $mapper->getBuckets()
200 private function buildDimensions(array $dimensionsData)
203 foreach ($dimensionsData as $dimensionData) {
204 $dimensions[$dimensionData[
'name']] = $this->objectManager->create(
205 \
Magento\Framework\Search\Request\Dimension::class,
bindDimension($name, $value)
bind($placeholder, $value)
setRequestName($requestName)
__construct(ObjectManagerInterface $objectManager, Config $config, Binder $binder, Cleaner $cleaner)