AggregationFactory.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Search\Adapter\Mysql;
  7. /**
  8. * Aggregation Factory
  9. *
  10. * @deprecated 102.0.0
  11. * @see \Magento\ElasticSearch
  12. */
  13. class AggregationFactory
  14. {
  15. /**
  16. * Object Manager instance
  17. *
  18. * @var \Magento\Framework\ObjectManagerInterface
  19. */
  20. protected $objectManager;
  21. /**
  22. * @param \Magento\Framework\ObjectManagerInterface $objectManager
  23. */
  24. public function __construct(\Magento\Framework\ObjectManagerInterface $objectManager)
  25. {
  26. $this->objectManager = $objectManager;
  27. }
  28. /**
  29. * Create Aggregation instance
  30. *
  31. * @param array $rawAggregation
  32. * @return \Magento\Framework\Search\Response\Aggregation
  33. */
  34. public function create(array $rawAggregation)
  35. {
  36. $buckets = [];
  37. foreach ($rawAggregation as $rawBucketName => $rawBucket) {
  38. /** @var \Magento\Framework\Search\Response\Bucket[] $buckets */
  39. $buckets[$rawBucketName] = $this->objectManager->create(
  40. \Magento\Framework\Search\Response\Bucket::class,
  41. [
  42. 'name' => $rawBucketName,
  43. 'values' => $this->prepareValues((array)$rawBucket)
  44. ]
  45. );
  46. }
  47. return $this->objectManager->create(
  48. \Magento\Framework\Search\Response\Aggregation::class,
  49. ['buckets' => $buckets]
  50. );
  51. }
  52. /**
  53. * Prepare values list
  54. *
  55. * @param array $values
  56. * @return \Magento\Framework\Search\Response\Aggregation\Value[]
  57. */
  58. private function prepareValues(array $values)
  59. {
  60. $valuesObjects = [];
  61. foreach ($values as $name => $value) {
  62. $valuesObjects[] = $this->objectManager->create(
  63. \Magento\Framework\Search\Response\Aggregation\Value::class,
  64. [
  65. 'value' => $name,
  66. 'metrics' => $value,
  67. ]
  68. );
  69. }
  70. return $valuesObjects;
  71. }
  72. }