diff options
Diffstat (limited to 'lib/private/Search/SearchQuery.php')
-rw-r--r-- | lib/private/Search/SearchQuery.php | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/lib/private/Search/SearchQuery.php b/lib/private/Search/SearchQuery.php new file mode 100644 index 00000000000..791edb7a0f7 --- /dev/null +++ b/lib/private/Search/SearchQuery.php @@ -0,0 +1,65 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OC\Search; + +use OCP\Search\IFilter; +use OCP\Search\IFilterCollection; +use OCP\Search\ISearchQuery; + +class SearchQuery implements ISearchQuery { + public const LIMIT_DEFAULT = 5; + + /** + * @param string[] $params Request query + * @param string[] $routeParameters + */ + public function __construct( + private IFilterCollection $filters, + private int $sortOrder = ISearchQuery::SORT_DATE_DESC, + private int $limit = self::LIMIT_DEFAULT, + private int|string|null $cursor = null, + private string $route = '', + private array $routeParameters = [], + ) { + } + + public function getTerm(): string { + return $this->getFilter('term')?->get() ?? ''; + } + + public function getFilter(string $name): ?IFilter { + return $this->filters->has($name) + ? $this->filters->get($name) + : null; + } + + public function getFilters(): IFilterCollection { + return $this->filters; + } + + public function getSortOrder(): int { + return $this->sortOrder; + } + + public function getLimit(): int { + return $this->limit; + } + + public function getCursor(): int|string|null { + return $this->cursor; + } + + public function getRoute(): string { + return $this->route; + } + + public function getRouteParameters(): array { + return $this->routeParameters; + } +} |