Skip to content

Commit 4f63ace

Browse files
author
Miroshnichenko
committed
add script to ConstructsAggregations and set default value for params in ScriptAggregation
1 parent a665505 commit 4f63ace

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

src/Aggregating/Metrics/ScriptAggregation.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ class ScriptAggregation implements Aggregation
1212
public function __construct(
1313
private readonly string $name,
1414
private readonly string $aggregationType,
15-
private readonly array $params,
1615
private readonly string $source,
16+
private readonly array $params = [],
1717
private readonly string $lang = ScriptLang::PAINLESS,
1818
) {
1919
Assert::stringNotEmpty(trim($name));

src/Concerns/ConstructsAggregations.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
use Ensi\LaravelElasticQuery\Aggregating\Metrics\MinAggregation;
1616
use Ensi\LaravelElasticQuery\Aggregating\Metrics\MinMaxAggregation;
1717
use Ensi\LaravelElasticQuery\Aggregating\Metrics\RangesAggregation;
18+
use Ensi\LaravelElasticQuery\Aggregating\Metrics\ScriptAggregation;
1819
use Ensi\LaravelElasticQuery\Aggregating\Metrics\ValueCountAggregation;
1920
use Ensi\LaravelElasticQuery\Contracts\Aggregation;
2021
use Ensi\LaravelElasticQuery\Contracts\Criteria;
22+
use Ensi\LaravelElasticQuery\Contracts\ScriptLang;
2123
use Ensi\LaravelElasticQuery\Filtering\BoolQueryBuilder;
2224
use Ensi\LaravelElasticQuery\Search\Sorting\Sort;
2325
use Ensi\LaravelElasticQuery\Search\Sorting\SortCollection;
@@ -81,6 +83,18 @@ public function max(string $name, string $field, mixed $missing = null): static
8183
return $this;
8284
}
8385

86+
public function script(
87+
string $name,
88+
string $aggregationType,
89+
string $source,
90+
array $params = [],
91+
string $lang = ScriptLang::PAINLESS
92+
): static {
93+
$this->aggregations->add(new ScriptAggregation($name, $aggregationType, $source, $params, $lang));
94+
95+
return $this;
96+
}
97+
8498
public function count(string $name, string $field): static
8599
{
86100
$this->aggregations->add(new ValueCountAggregation($name, $this->absolutePath($field)));

src/Contracts/AggregationsBuilder.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,7 @@ public function max(string $name, string $field, mixed $missing = null): static;
2525

2626
public function count(string $path, string $field): static;
2727

28+
public function script(string $name, string $aggregationType, string $source, array $params = [], string $lang = ScriptLang::PAINLESS): static;
29+
2830
public function nested(string $path, Closure $callback): static;
2931
}

0 commit comments

Comments
 (0)