12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Elasticsearch\SearchAdapter;
- use Magento\Framework\ObjectManagerInterface;
- /**
- * Aggregation Factory
- * @api
- * @since 100.1.0
- */
- class AggregationFactory
- {
- /**
- * Object Manager instance
- *
- * @var ObjectManagerInterface
- * @since 100.1.0
- */
- protected $objectManager;
- /**
- * @param ObjectManagerInterface $objectManager
- */
- public function __construct(ObjectManagerInterface $objectManager)
- {
- $this->objectManager = $objectManager;
- }
- /**
- * Create Aggregation instance
- *
- * @param array $rawAggregation
- * @return \Magento\Framework\Search\Response\Aggregation
- * @since 100.1.0
- */
- public function create(array $rawAggregation)
- {
- $buckets = [];
- foreach ($rawAggregation as $rawBucketName => $rawBucket) {
- /** @var \Magento\Framework\Search\Response\Bucket[] $buckets */
- $buckets[$rawBucketName] = $this->objectManager->create(
- \Magento\Framework\Search\Response\Bucket::class,
- [
- 'name' => $rawBucketName,
- 'values' => $this->prepareValues($rawBucket)
- ]
- );
- }
- return $this->objectManager->create(
- \Magento\Framework\Search\Response\Aggregation::class,
- ['buckets' => $buckets]
- );
- }
- /**
- * Prepare values list
- *
- * @param array $values
- * @return \Magento\Framework\Search\Response\Aggregation\Value[]
- */
- private function prepareValues(array $values)
- {
- $valuesObjects = [];
- foreach ($values as $name => $value) {
- $valuesObjects[] = $this->objectManager->create(
- \Magento\Framework\Search\Response\Aggregation\Value::class,
- [
- 'value' => $name,
- 'metrics' => $value,
- ]
- );
- }
- return $valuesObjects;
- }
- }
|