Skip to content

Commit

Permalink
better/native type declarations
Browse files Browse the repository at this point in the history
  • Loading branch information
smoench committed Jul 19, 2022
1 parent 1383847 commit 4d5497f
Show file tree
Hide file tree
Showing 165 changed files with 890 additions and 2,421 deletions.
6 changes: 3 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@
},
"require-dev": {
"phpunit/phpunit": "^9.5",
"squizlabs/php_codesniffer": "^3.0"
"squizlabs/php_codesniffer": "^3.0",
"rector/rector": "^0.13"
},
"autoload": {
"psr-4": {
Expand All @@ -37,6 +38,5 @@
"psr-4": {
"OpenSearchDSL\\Tests\\": "tests/"
}
},
"minimum-stability": "dev"
}
}
78 changes: 18 additions & 60 deletions src/Aggregation/AbstractAggregation.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,68 +24,34 @@ abstract class AbstractAggregation implements NamedBuilderInterface
use ParametersTrait;
use NameAwareTrait;

/**
* @var string
*/
private $field;
private ?string $field = null;

/**
* @var BuilderBag
*/
private $aggregations;
private ?BuilderBag $aggregations = null;

/**
* Abstract supportsNesting method.
*
* @return bool
*/
abstract protected function supportsNesting();
abstract protected function supportsNesting(): bool;

/**
* @return array|\stdClass
*/
abstract protected function getArray();
abstract public function getArray(): array|\stdClass;

/**
* Inner aggregations container init.
*
* @param string $name
*/
public function __construct($name)
public function __construct(string $name)
{
$this->setName($name);
}

/**
* @param string $field
*
* @return $this
*/
public function setField($field)
public function setField(?string $field): static
{
$this->field = $field;

return $this;
}

/**
* @return string
*/
public function getField()
public function getField(): ?string
{
return $this->field;
}

/**
* Adds a sub-aggregation.
*
* @param AbstractAggregation $abstractAggregation
*
* @return $this
*/
public function addAggregation(AbstractAggregation $abstractAggregation)
public function addAggregation(AbstractAggregation $abstractAggregation): static
{
if (!$this->aggregations) {
if ($this->aggregations === null) {
$this->aggregations = $this->createBuilderBag();
}

Expand All @@ -99,13 +65,13 @@ public function addAggregation(AbstractAggregation $abstractAggregation)
*
* @return BuilderBag[]|NamedBuilderInterface[]
*/
public function getAggregations()
public function getAggregations(): array
{
if ($this->aggregations) {
if ($this->aggregations !== null) {
return $this->aggregations->all();
} else {
return [];
}

return [];
}

/**
Expand All @@ -118,15 +84,12 @@ public function getAggregation($name)
{
if ($this->aggregations && $this->aggregations->has($name)) {
return $this->aggregations->get($name);
} else {
return null;
}

return null;
}

/**
* {@inheritdoc}
*/
public function toArray()
public function toArray(): array
{
$array = $this->getArray();
$result = [
Expand Down Expand Up @@ -154,18 +117,13 @@ protected function collectNestedAggregations()
$result = [];
/** @var AbstractAggregation $aggregation */
foreach ($this->getAggregations() as $aggregation) {
$result[$aggregation->getName()] = $aggregation->toArray();
$result[$aggregation->getName()] = $aggregation->toArray() ?: null;
}

return $result;
}

/**
* Creates BuilderBag new instance.
*
* @return BuilderBag
*/
private function createBuilderBag()
private function createBuilderBag(): BuilderBag
{
return new BuilderBag();
}
Expand Down
39 changes: 11 additions & 28 deletions src/Aggregation/Bucketing/AdjacencyMatrixAggregation.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,59 +22,42 @@
*/
class AdjacencyMatrixAggregation extends AbstractAggregation
{
const FILTERS = 'filters';
public const FILTERS = 'filters';

use BucketingTrait;

/**
* @var BuilderInterface[]
* @var array<string, array<string, array|null>>
*/
private $filters = [
private array $filters = [
self::FILTERS => []
];

/**
* Inner aggregations container init.
*
* @param string $name
* @param BuilderInterface[] $filters
* @param array<string, BuilderInterface> $filters
*/
public function __construct($name, $filters = [])
public function __construct(string $name, array $filters = [])
{
parent::__construct($name);

foreach ($filters as $name => $filter) {
$this->addFilter($name, $filter);
foreach ($filters as $filterName => $filter) {
$this->addFilter($filterName, $filter);
}
}

/**
* @param string $name
* @param BuilderInterface $filter
*
* @throws \LogicException
*
* @return self
*/
public function addFilter($name, BuilderInterface $filter)
public function addFilter(string $name, BuilderInterface $filter): self
{
$this->filters[self::FILTERS][$name] = $filter->toArray();
$this->filters[self::FILTERS][$name] = $filter->toArray() ?: null;

return $this;
}

/**
* {@inheritdoc}
*/
public function getArray()
public function getArray(): array
{
return $this->filters;
}

/**
* {@inheritdoc}
*/
public function getType()
public function getType(): string
{
return 'adjacency_matrix';
}
Expand Down
19 changes: 4 additions & 15 deletions src/Aggregation/Bucketing/AutoDateHistogramAggregation.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@

use OpenSearchDSL\Aggregation\AbstractAggregation;
use OpenSearchDSL\Aggregation\Type\BucketingTrait;
use OpenSearchDSL\BuilderInterface;

/**
* Class representing AutoDateHistogramAggregation.
Expand All @@ -24,15 +23,7 @@ class AutoDateHistogramAggregation extends AbstractAggregation
{
use BucketingTrait;

/**
* Inner aggregations container init.
*
* @param string $name
* @param string $field
* @param int $buckets
* @param string $format
*/
public function __construct($name, $field, $buckets = null, $format = null)
public function __construct(string $name, string $field, ?int $buckets = null, ?string $format = null)
{
parent::__construct($name);

Expand All @@ -50,21 +41,19 @@ public function __construct($name, $field, $buckets = null, $format = null)
/**
* {@inheritdoc}
*/
public function getArray()
public function getArray(): array
{
$data = array_filter(
return array_filter(
[
'field' => $this->getField(),
]
);

return $data;
}

/**
* {@inheritdoc}
*/
public function getType()
public function getType(): string
{
return 'auto_date_histogram';
}
Expand Down
46 changes: 12 additions & 34 deletions src/Aggregation/Bucketing/ChildrenAggregation.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

namespace OpenSearchDSL\Aggregation\Bucketing;

use LogicException;
use OpenSearchDSL\Aggregation\AbstractAggregation;
use OpenSearchDSL\Aggregation\Type\BucketingTrait;

Expand All @@ -23,59 +24,36 @@ class ChildrenAggregation extends AbstractAggregation
{
use BucketingTrait;

/**
* @var string
*/
private $children;
private ?string $children;

/**
* Return children.
*
* @return string
*/
public function getChildren()
{
return $this->children;
}

/**
* @param string $name
* @param string $children
*/
public function __construct($name, $children = null)
public function __construct(string $name, ?string $children = null)
{
parent::__construct($name);

$this->setChildren($children);
}

/**
* @param string $children
*
* @return $this
*/
public function setChildren($children)
public function getChildren(): ?string
{
return $this->children;
}

public function setChildren(?string $children): self
{
$this->children = $children;

return $this;
}

/**
* {@inheritdoc}
*/
public function getType()
public function getType(): string
{
return 'children';
}

/**
* {@inheritdoc}
*/
public function getArray()
public function getArray(): array
{
if (count($this->getAggregations()) == 0) {
throw new \LogicException("Children aggregation `{$this->getName()}` has no aggregations added");
throw new LogicException("Children aggregation `{$this->getName()}` has no aggregations added");
}

return ['type' => $this->getChildren()];
Expand Down
Loading

0 comments on commit 4d5497f

Please sign in to comment.