export function documentsFetcher()

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