Complete useFilteredSearchQuery refactoring (#1531)

Complete useFilteredSearchQuery ref
actoring
This commit is contained in:
Charles Bochet
2023-09-10 17:07:05 -07:00
committed by GitHub
parent bcbf303364
commit c808eeca79
7 changed files with 35 additions and 57 deletions

View File

@ -41,11 +41,7 @@ export function ActivityAssigneePicker({
queryHook: useSearchUserQuery,
filters: [
{
fieldName: 'firstName',
filter: relationPickerSearchFilter,
},
{
fieldName: 'lastName',
fieldNames: ['firstName', 'lastName'],
filter: relationPickerSearchFilter,
},
],

View File

@ -16,7 +16,7 @@ export function useFilteredSearchCompanyQuery({
queryHook: useSearchCompanyQuery,
filters: [
{
fieldName: 'name',
fieldNames: ['name'],
filter: searchFilter,
},
],

View File

@ -31,19 +31,24 @@ export function PeoplePicker({
relationPickerSearchFilterScopedState,
);
const queryFilters = [
{
fieldNames: ['firstName', 'lastName'],
filter: relationPickerSearchFilter,
},
];
if (companyId) {
queryFilters.push({
fieldNames: ['companyId'],
filter: companyId,
});
}
const people = useFilteredSearchEntityQuery({
queryHook: useSearchPeopleQuery,
selectedIds: [personId ?? ''],
filters: [
{
fieldName: 'firstName',
filter: relationPickerSearchFilter,
},
{
fieldName: 'lastName',
filter: relationPickerSearchFilter,
},
],
filters: queryFilters,
mappingFunction: (person) => ({
entityType: Entity.Person,
id: person.id,

View File

@ -16,11 +16,7 @@ export function useFilteredSearchPeopleQuery({
queryHook: useSearchPeopleQuery,
filters: [
{
fieldName: 'firstName',
filter: searchFilter,
},
{
fieldName: 'lastName',
fieldNames: ['firstName', 'lastName'],
filter: searchFilter,
},
],

View File

@ -26,7 +26,7 @@ type ExtractEntityTypeFromQueryResponse<T> = T extends {
? U
: never;
type SearchFilter = { fieldName: string; filter: string | number };
type SearchFilter = { fieldNames: string[]; filter: string | number };
const DEFAULT_SEARCH_REQUEST_LIMIT = 10;
@ -87,12 +87,18 @@ export function useFilteredSearchEntityQuery<
} as QueryVariables,
});
const searchFilterByField = filters.map(({ fieldName, filter }) => ({
[fieldName]: {
contains: `%${filter}%`,
mode: QueryMode.Insensitive,
},
}));
const searchFilter = filters.map(({ fieldNames, filter }) => {
return {
OR: fieldNames.map((fieldName) => ({
[fieldName]: {
contains: `%${filter}%`,
mode: QueryMode.Insensitive,
},
})),
};
});
console.log(searchFilter);
const {
loading: filteredSelectedEntitiesLoading,
@ -102,7 +108,7 @@ export function useFilteredSearchEntityQuery<
where: {
AND: [
{
OR: searchFilterByField,
AND: searchFilter,
},
{
id: {
@ -117,30 +123,13 @@ export function useFilteredSearchEntityQuery<
} as QueryVariables,
});
const filterEntitesBy = filterByFields
? filterByFields.map((field) => {
const extractedValues: Record<string, any> = {};
for (const key in field) {
extractedValues[key] = {
equals: field[key],
};
}
return extractedValues;
})
: [];
const { loading: entitiesToSelectLoading, data: entitiesToSelectData } =
queryHook({
variables: {
where: {
AND: [
{
OR: filterEntitesBy,
},
{
OR: searchFilterByField,
AND: searchFilter,
},
{
id: {

View File

@ -28,11 +28,7 @@ export function FilterDropdownUserSearchSelect({
queryHook: useSearchUserQuery,
filters: [
{
fieldName: 'firstName',
filter: filterDropdownSearchInput,
},
{
fieldName: 'lastName',
fieldNames: ['firstName', 'lastName'],
filter: filterDropdownSearchInput,
},
],

View File

@ -31,11 +31,7 @@ export function UserPicker({
queryHook: useSearchUserQuery,
filters: [
{
fieldName: 'firstName',
filter: relationPickerSearchFilter,
},
{
fieldName: 'lastName',
fieldNames: ['firstName', 'lastName'],
filter: relationPickerSearchFilter,
},
],