commerce/packages/commercejs/utils/product-search.ts
2022-01-13 20:58:26 -05:00

55 lines
1.2 KiB
TypeScript

import { SearchProductsBody } from '@commerce/types/product'
const getFilterVariables = ({
search,
categoryId,
}: {
search?: string
categoryId?: string | number
}) => {
let filterVariables: { [key: string]: any } = {}
if (search) {
filterVariables.query = search
}
if (categoryId) {
filterVariables['category_id'] = categoryId
}
return filterVariables
}
const getSortVariables = ({ sort }: { sort?: string }) => {
let sortVariables: { [key: string]: any } = {}
switch (sort) {
case 'trending-desc':
case 'latest-desc':
sortVariables = {
sortBy: 'updated',
sortDirection: 'desc',
}
break
case 'price-asc':
sortVariables = {
sortBy: 'price',
sortDirection: 'asc',
}
break
case 'price-desc':
sortVariables = {
sortBy: 'price',
sortDirection: 'desc',
}
break
}
return sortVariables
}
export const getProductSearchVariables = (input: SearchProductsBody) => {
const { search, categoryId, sort } = input
const filterVariables = getFilterVariables({ search, categoryId })
const sortVariables = getSortVariables({ sort })
return {
...filterVariables,
...sortVariables,
}
}