diff options
author | Joas Schilling <213943+nickvergessen@users.noreply.github.com> | 2023-11-16 15:41:27 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-16 15:41:27 +0100 |
commit | 7b45939561051b761822190e9b609f0998eb7640 (patch) | |
tree | 50c63b912f323230255d830d49e8723c970b601c /lib/private/Search | |
parent | 9c3350b3131312e60155c26a8a15b95981c6dd0a (diff) | |
parent | 72c191df117700d1b01f21afdf4e657f25b68453 (diff) | |
download | nextcloud-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.php | 4 | ||||
-rw-r--r-- | lib/private/Search/SearchComposer.php | 18 |
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); } |