Improve multi word filtering (#5034)

improve multi word search

closes #4212 
closes #3386
This commit is contained in:
martmull
2024-04-18 15:46:59 +02:00
committed by GitHub
parent 88c14b7e52
commit 1c1a055c94
54 changed files with 212 additions and 146 deletions

View File

@ -5,6 +5,7 @@ import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/get
import { ObjectRecordQueryFilter } from '@/object-record/record-filter/types/ObjectRecordQueryFilter';
import { makeOrFilterVariables } from '@/object-record/utils/makeOrFilterVariables';
import { FieldMetadataType } from '~/generated/graphql';
import { generateILikeFiltersForCompositeFields } from '~/utils/array/generateILikeFiltersForCompositeFields';
import { isDefined } from '~/utils/isDefined';
export const useSearchFilterPerMetadataItem = ({
@ -29,25 +30,16 @@ export const useSearchFilterPerMetadataItem = ({
switch (labelIdentifierFieldMetadataItem.type) {
case FieldMetadataType.FullName: {
if (isNonEmptyString(searchFilterValue)) {
const fullNameFilter = makeOrFilterVariables([
{
[labelIdentifierFieldMetadataItem.name]: {
firstName: {
ilike: `%${searchFilterValue}%`,
},
},
},
{
[labelIdentifierFieldMetadataItem.name]: {
lastName: {
ilike: `%${searchFilterValue}%`,
},
},
},
]);
const compositeFilter = makeOrFilterVariables(
generateILikeFiltersForCompositeFields(
searchFilterValue,
labelIdentifierFieldMetadataItem.name,
['firstName', 'lastName'],
),
);
if (isDefined(fullNameFilter)) {
searchFilter = fullNameFilter;
if (isDefined(compositeFilter)) {
searchFilter = compositeFilter;
}
}
break;