diff options
Diffstat (limited to 'lib/private/Files/Search/QueryOptimizer/QueryOptimizerStep.php')
-rw-r--r-- | lib/private/Files/Search/QueryOptimizer/QueryOptimizerStep.php | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/private/Files/Search/QueryOptimizer/QueryOptimizerStep.php b/lib/private/Files/Search/QueryOptimizer/QueryOptimizerStep.php new file mode 100644 index 00000000000..15b5b580ec1 --- /dev/null +++ b/lib/private/Files/Search/QueryOptimizer/QueryOptimizerStep.php @@ -0,0 +1,42 @@ +<?php + +declare(strict_types=1); +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OC\Files\Search\QueryOptimizer; + +use OCP\Files\Search\ISearchBinaryOperator; +use OCP\Files\Search\ISearchOperator; + +class QueryOptimizerStep { + /** + * Allow optimizer steps to inspect the entire query before starting processing + * + * @param ISearchOperator $operator + * @return void + */ + public function inspectOperator(ISearchOperator $operator): void { + if ($operator instanceof ISearchBinaryOperator) { + foreach ($operator->getArguments() as $argument) { + $this->inspectOperator($argument); + } + } + } + + /** + * Allow optimizer steps to modify query operators + * + * @param ISearchOperator $operator + * @return void + */ + public function processOperator(ISearchOperator &$operator) { + if ($operator instanceof ISearchBinaryOperator) { + foreach ($operator->getArguments() as $argument) { + $this->processOperator($argument); + } + } + } +} |