Introduce constants for builtin search filters

Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
This commit is contained in:
Benjamin Gaussorgues 2023-11-15 17:24:37 +01:00
parent d79d85ddd2
commit 72c191df11
No known key found for this signature in database
GPG key ID: 5DAC1CAFAA6DB883
2 changed files with 24 additions and 9 deletions

View file

@ -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);
}

View file

@ -31,6 +31,21 @@ namespace OCP\Search;
* @since 28.0.0
*/
interface IFilter {
/** @since 28.0.0 */
public const BUILTIN_TERM = 'term';
/** @since 28.0.0 */
public const BUILTIN_SINCE = 'since';
/** @since 28.0.0 */
public const BUILTIN_UNTIL = 'until';
/** @since 28.0.0 */
public const BUILTIN_PERSON = 'person';
/** @since 28.0.0 */
public const BUILTIN_TITLE_ONLY = 'title-only';
/** @since 28.0.0 */
public const BUILTIN_PLACES = 'places';
/** @since 28.0.0 */
public const BUILTIN_PROVIDER = 'provider';
/**
* Get filter value
*