From 13a8d42a99d2c4dfc56d3debb2d74a7bea0e38f8 Mon Sep 17 00:00:00 2001 From: pmishev <pmishev@gmail.com> Date: Thu, 27 Jun 2019 10:10:24 +0100 Subject: [PATCH] Added support for 'keyed' option to DateRangeAggregation (#283) --- .../Bucketing/DateRangeAggregation.php | 45 ++++++++++++++----- .../Bucketing/DateRangeAggregationTest.php | 2 + 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/src/Aggregation/Bucketing/DateRangeAggregation.php b/src/Aggregation/Bucketing/DateRangeAggregation.php index 00184c9..3ca14e2 100644 --- a/src/Aggregation/Bucketing/DateRangeAggregation.php +++ b/src/Aggregation/Bucketing/DateRangeAggregation.php @@ -29,25 +29,29 @@ class DateRangeAggregation extends AbstractAggregation private $format; /** - * @return string + * @var array */ - public function getFormat() - { - return $this->format; - } + private $ranges = []; + + /** + * @var bool + */ + private $keyed = false; /** * @param string $name * @param string $field * @param string $format * @param array $ranges + * @param bool $keyed */ - public function __construct($name, $field = null, $format = null, array $ranges = []) + public function __construct($name, $field = null, $format = null, array $ranges = [], $keyed = false) { parent::__construct($name); $this->setField($field); $this->setFormat($format); + $this->setKeyed($keyed); foreach ($ranges as $range) { $from = isset($range['from']) ? $range['from'] : null; $to = isset($range['to']) ? $range['to'] : null; @@ -57,23 +61,41 @@ class DateRangeAggregation extends AbstractAggregation } /** - * @param string $format + * Sets if result buckets should be keyed. + * + * @param bool $keyed + * + * @return DateRangeAggregation */ - public function setFormat($format) + public function setKeyed($keyed) { - $this->format = $format; + $this->keyed = $keyed; + + return $this; } /** - * @var array + * @return string */ - private $ranges = []; + public function getFormat() + { + return $this->format; + } + + /** + * @param string $format + */ + public function setFormat($format) + { + $this->format = $format; + } /** * Add range to aggregation. * * @param string|null $from * @param string|null $to + * @param string|null $key * * @return $this * @@ -111,6 +133,7 @@ class DateRangeAggregation extends AbstractAggregation 'format' => $this->getFormat(), 'field' => $this->getField(), 'ranges' => $this->ranges, + 'keyed' => $this->keyed, ]; return $data; diff --git a/tests/Unit/Aggregation/Bucketing/DateRangeAggregationTest.php b/tests/Unit/Aggregation/Bucketing/DateRangeAggregationTest.php index 80514f2..6a3c5db 100644 --- a/tests/Unit/Aggregation/Bucketing/DateRangeAggregationTest.php +++ b/tests/Unit/Aggregation/Bucketing/DateRangeAggregationTest.php @@ -47,11 +47,13 @@ class DateRangeAggregationTest extends \PHPUnit\Framework\TestCase $agg = new DateRangeAggregation('foo', 'baz'); $agg->addRange(10, 20); $agg->setFormat('bar'); + $agg->setKeyed(true); $result = $agg->getArray(); $expected = [ 'format' => 'bar', 'field' => 'baz', 'ranges' => [['from' => 10, 'to' => 20]], + 'keyed' => true, ]; $this->assertEquals($expected, $result); } -- GitLab