aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Search
diff options
context:
space:
mode:
authorJoas Schilling <213943+nickvergessen@users.noreply.github.com>2023-11-16 15:41:27 +0100
committerGitHub <noreply@github.com>2023-11-16 15:41:27 +0100
commit7b45939561051b761822190e9b609f0998eb7640 (patch)
tree50c63b912f323230255d830d49e8723c970b601c /lib/private/Search
parent9c3350b3131312e60155c26a8a15b95981c6dd0a (diff)
parent72c191df117700d1b01f21afdf4e657f25b68453 (diff)
downloadnextcloud-server-7b45939561051b761822190e9b609f0998eb7640.tar.gz
nextcloud-server-7b45939561051b761822190e9b609f0998eb7640.zip
Merge pull request #41511 from nextcloud/enh/advanced_search_backend
Enhancements for advanced search API
Diffstat (limited to 'lib/private/Search')
-rw-r--r--lib/private/Search/FilterFactory.php4
-rw-r--r--lib/private/Search/SearchComposer.php18
2 files changed, 12 insertions, 10 deletions
diff --git a/lib/private/Search/FilterFactory.php b/lib/private/Search/FilterFactory.php
index 19afb2c04be..2e96dfb7960 100644
--- a/lib/private/Search/FilterFactory.php
+++ b/lib/private/Search/FilterFactory.php
@@ -32,6 +32,8 @@ use OCP\IUserManager;
use RuntimeException;
final class FilterFactory {
+ private const PERSON_TYPE_SEPARATOR = '/';
+
public static function get(string $type, string|array $filter): IFilter {
return match ($type) {
FilterDefinition::TYPE_BOOL => new Filter\BooleanFilter($filter),
@@ -48,7 +50,7 @@ final class FilterFactory {
}
private static function getPerson(string $person): IFilter {
- $parts = explode('_', $person, 2);
+ $parts = explode(self::PERSON_TYPE_SEPARATOR, $person, 2);
return match (count($parts)) {
1 => self::get(FilterDefinition::TYPE_NC_USER, $person),
diff --git a/lib/private/Search/SearchComposer.php b/lib/private/Search/SearchComposer.php
index b92fdd250d8..b20d47aa94e 100644
--- a/lib/private/Search/SearchComposer.php
+++ b/lib/private/Search/SearchComposer.php
@@ -81,13 +81,13 @@ class SearchComposer {
private LoggerInterface $logger
) {
$this->commonFilters = [
- 'term' => new FilterDefinition('term', FilterDefinition::TYPE_STRING),
- 'since' => new FilterDefinition('since', FilterDefinition::TYPE_DATETIME),
- 'until' => new FilterDefinition('until', FilterDefinition::TYPE_DATETIME),
- 'title-only' => new FilterDefinition('title-only', FilterDefinition::TYPE_BOOL, false),
- 'person' => new FilterDefinition('person', FilterDefinition::TYPE_PERSON),
- 'places' => new FilterDefinition('places', FilterDefinition::TYPE_STRINGS, false),
- 'provider' => new FilterDefinition('provider', FilterDefinition::TYPE_STRING, false),
+ IFilter::BUILTIN_TERM => new FilterDefinition(IFilter::BUILTIN_TERM, FilterDefinition::TYPE_STRING),
+ IFilter::BUILTIN_SINCE => new FilterDefinition(IFilter::BUILTIN_SINCE, FilterDefinition::TYPE_DATETIME),
+ IFilter::BUILTIN_UNTIL => new FilterDefinition(IFilter::BUILTIN_UNTIL, FilterDefinition::TYPE_DATETIME),
+ IFilter::BUILTIN_TITLE_ONLY => new FilterDefinition(IFilter::BUILTIN_TITLE_ONLY, FilterDefinition::TYPE_BOOL, false),
+ IFilter::BUILTIN_PERSON => new FilterDefinition(IFilter::BUILTIN_PERSON, FilterDefinition::TYPE_PERSON),
+ IFilter::BUILTIN_PLACES => new FilterDefinition(IFilter::BUILTIN_PLACES, FilterDefinition::TYPE_STRINGS, false),
+ IFilter::BUILTIN_PROVIDER => new FilterDefinition(IFilter::BUILTIN_PROVIDER, FilterDefinition::TYPE_STRING, false),
];
}
@@ -189,7 +189,7 @@ class SearchComposer {
$triggers += $provider->getAlternateIds();
$filters = $provider->getSupportedFilters();
} else {
- $filters = ['term'];
+ $filters = [IFilter::BUILTIN_TERM];
}
return [
@@ -310,7 +310,7 @@ class SearchComposer {
$provider = $this->providers[$providerId]['provider'];
$supportedFilters = $provider instanceof IFilteringProvider
? $provider->getSupportedFilters()
- : ['term'];
+ : [IFilter::BUILTIN_TERM];
return in_array($filterDefinition->name(), $supportedFilters, true);
}