in web/src/api/hooks/search.ts [91:144]
export function documentsFetcher(
page = 1,
size = pageSizes._15,
searchText: string = '',
sort: string,
filter: FacetFilter
): Promise<PagedResponse<Pieces>> {
let sorting: { field: string; direction: string }[] = [];
const filters = [];
const categoryFilter = Object.values(filter['category'])
.map((el) => el)
.filter((item) => item.value);
const jobFilter = Object.values(filter['job_id'])
.map((el) => el)
.filter((item) => item.value);
if (sort !== 'relevancy') {
sorting = [
{
field: sort,
direction: 'asc'
}
];
}
if (categoryFilter.length) {
filters.push({
field: 'category',
operator: Operators.IN,
value: categoryFilter.map(({ id }) => id)
});
}
if (jobFilter.length) {
filters.push({
field: 'job_id',
operator: Operators.IN,
value: jobFilter.map(({ id }) => id)
});
}
const body = {
query: searchText,
pagination: { page_num: page, page_size: size },
sorting,
filters
};
return useBadgerFetch<PagedResponse<Pieces>>({
url: `${namespace}/pieces`,
method: 'post',
withCredentials: true
})(JSON.stringify(body));
}