diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-03-02 16:51:05 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-03-02 16:51:05 +0700 |
| commit | d336735a91133cc3f1cf6f67ba2ac29f0985fd2e (patch) | |
| tree | f64a5c6de6e0ea015952ae028dca115077cffa45 /src2/pages/api/shop | |
| parent | 074edfe4e51efd3b4a44dc7fe6e1284c9c560501 (diff) | |
delete src2
Diffstat (limited to 'src2/pages/api/shop')
| -rw-r--r-- | src2/pages/api/shop/search.js | 96 | ||||
| -rw-r--r-- | src2/pages/api/shop/suggest.js | 12 |
2 files changed, 0 insertions, 108 deletions
diff --git a/src2/pages/api/shop/search.js b/src2/pages/api/shop/search.js deleted file mode 100644 index ad986c86..00000000 --- a/src2/pages/api/shop/search.js +++ /dev/null @@ -1,96 +0,0 @@ -import axios from "axios"; - -const productResponseMap = (products) => { - return products.map((product) => { - let productMapped = { - id: product.product_id ? product.product_id[0] : '', - image: product.image ? product.image[0] : '', - code: product.default_code ? product.default_code[0] : '', - name: product.product_name ? product.product_name[0] : '', - lowest_price: { - price: product.price ? product.price[0] : 0, - price_discount: product.price_discount ? product.price_discount[0] : 0, - discount_percentage: product.discount ? product.discount[0] : 0, - }, - variant_total: product.variant_total ? product.variant_total[0] : 0, - stock_total: product.stock_total ? product.stock_total[0] : 0, - weight: product.weight ? product.weight[0] : 0, - manufacture: {}, - categories: [], - }; - - if (product.manufacture_id && product.brand) { - productMapped.manufacture = { - id: product.manufacture_id ? product.manufacture_id[0] : '', - name: product.brand ? product.brand[0] : '', - }; - } - - productMapped.categories = [ - { - id: product.category_id ? product.category_id[0] : '', - name: product.category_name ? product.category_name[0] : '', - } - ]; - - return productMapped; - }); -} - -export default async function handler(req, res) { - const { - q, - page = 1, - brand = '', - category = '', - price_from = 0, - price_to = 0, - order_by = '' - } = req.query; - - let paramOrderBy = ''; - switch (order_by) { - case 'price-asc': - paramOrderBy = ', price_discount ASC'; - break; - case 'price-desc': - paramOrderBy = ', price_discount DESC'; - break; - case 'popular': - paramOrderBy = ', search_rank DESC'; - break; - case 'stock': - paramOrderBy = ', stock_total DESC'; - break; - } - - let limit = 30; - let offset = (page - 1) * limit; - let parameter = [ - `facet.query=${q}`, - 'facet=true', - 'indent=true', - 'q.op=AND', - `q=${q}`, - 'facet.field=brand_str', - 'facet.field=category_name_str', - `start=${offset}`, - `rows=${limit}`, - `sort=product_rating DESC ${paramOrderBy}`, - `fq=price_discount:[${price_from == '' ? '*' : price_from} TO ${price_to == '' ? '*' : price_to}]` - ]; - - if (brand) parameter.push(`fq=brand:${brand}`); - if (category) parameter.push(`fq=category_name:${category}`); - - let result = await axios(process.env.SOLR_HOST + '/solr/products/select?' + parameter.join('&')); - try { - result.data.response.products = productResponseMap(result.data.response.docs); - result.data.responseHeader.params.start = parseInt(result.data.responseHeader.params.start); - result.data.responseHeader.params.rows = parseInt(result.data.responseHeader.params.rows); - delete result.data.response.docs; - res.status(200).json(result.data); - } catch (error) { - res.status(400).json({ error: error.message }); - } -}
\ No newline at end of file diff --git a/src2/pages/api/shop/suggest.js b/src2/pages/api/shop/suggest.js deleted file mode 100644 index 6db1a851..00000000 --- a/src2/pages/api/shop/suggest.js +++ /dev/null @@ -1,12 +0,0 @@ -import axios from "axios"; - -export default async function handler(req, res) { - const { q } = req.query; - - let result = await axios(process.env.SOLR_HOST + `/solr/products/suggest?suggest=true&suggest.dictionary=mySuggester&suggest.q=${q}`); - try { - res.status(200).json(result.data); - } catch (error) { - res.status(400).json({ error: error.message }); - } -}
\ No newline at end of file |
