-
Notifications
You must be signed in to change notification settings - Fork 1
/
BasicFilters.php
70 lines (64 loc) · 2.46 KB
/
BasicFilters.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
declare(strict_types=1);
/**
* Pimcore
*
* This source file is available under two different licenses:
* - GNU General Public License version 3 (GPLv3)
* - Pimcore Commercial License (PCL)
* Full copyright and license information is available in
* LICENSE.md which is distributed with this source code.
*
* @copyright Copyright (c) Pimcore GmbH (http://www.pimcore.org)
* @license http://www.pimcore.org/license GPLv3 and PCL
*/
namespace Pimcore\Bundle\GenericDataIndexBundle\SearchIndexAdapter\OpenSearch\Search\Modifier\Filter;
use Pimcore\Bundle\GenericDataIndexBundle\Attribute\OpenSearch\AsSearchModifierHandler;
use Pimcore\Bundle\GenericDataIndexBundle\Enum\SearchIndex\FieldCategory\SystemField;
use Pimcore\Bundle\GenericDataIndexBundle\Model\OpenSearch\Modifier\SearchModifierContextInterface;
use Pimcore\Bundle\GenericDataIndexBundle\Model\OpenSearch\Query\BoolQuery;
use Pimcore\Bundle\GenericDataIndexBundle\Model\OpenSearch\Query\TermFilter;
use Pimcore\Bundle\GenericDataIndexBundle\Model\OpenSearch\Query\TermsFilter;
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Basic\ExcludeFoldersFilter;
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Basic\IdFilter;
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Basic\IdsFilter;
/**
* @internal
*/
final class BasicFilters
{
#[AsSearchModifierHandler]
public function handleIdFilter(IdFilter $idFilter, SearchModifierContextInterface $context): void
{
$context->getSearch()->addQuery(
new TermFilter(
field: SystemField::ID->getPath(),
term: $idFilter->getId(),
)
);
}
#[AsSearchModifierHandler]
public function handleIdsFilter(IdsFilter $idsFilter, SearchModifierContextInterface $context): void
{
$context->getSearch()->addQuery(
new TermsFilter(
field: SystemField::ID->getPath(),
terms: $idsFilter->getIds(),
)
);
}
#[AsSearchModifierHandler]
public function handleExcludeFoldersFilter(
ExcludeFoldersFilter $excludeFoldersFilter,
SearchModifierContextInterface $context
): void {
$context->getSearch()->addQuery(new BoolQuery([
'must_not' => [
new TermFilter(
field: SystemField::TYPE->getPath(),
term: 'folder',
),
],
]));
}
}