Skip to content

Commit 57bd1a7

Browse files
committed
feat(mongodb): handle aggregation for PartialSearchFilter
1 parent 82a83b3 commit 57bd1a7

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

src/Doctrine/Odm/Filter/PartialSearchFilter.php

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,29 @@ final class PartialSearchFilter implements FilterInterface, OpenApiParameterFilt
3131
public function apply(Builder $aggregationBuilder, string $resourceClass, ?Operation $operation = null, array &$context = []): void
3232
{
3333
$parameter = $context['parameter'];
34-
$value = $parameter->getValue();
34+
$values = (array) $parameter->getValue();
3535

36-
// TODO: handle nested properties
3736
$property = $parameter->getProperty();
38-
$escapedValue = preg_quote($value, '/');
3937

40-
$aggregationBuilder
41-
->match()
42-
->field($property)
43-
->equals(new Regex($escapedValue, 'i'));
38+
if (1 === \count($values)) {
39+
$escapedValue = preg_quote((string) $values[0], '/');
40+
$aggregationBuilder
41+
->match()
42+
->field($property)
43+
->equals(new Regex($escapedValue, 'i'));
44+
45+
return;
46+
}
47+
48+
$match = $aggregationBuilder->match();
49+
foreach ($values as $value) {
50+
$escapedValue = preg_quote((string) $value, '/');
51+
52+
$match->addOr(
53+
$match->expr()
54+
->field($property)
55+
->equals(new Regex($escapedValue, 'i'))
56+
);
57+
}
4458
}
4559
}

0 commit comments

Comments
 (0)