summaryrefslogtreecommitdiff
path: root/src/pages/api
diff options
context:
space:
mode:
authorHATEC\SPVDEV001 <tri.susilo@altama.co.id>2023-03-31 11:10:27 +0700
committerHATEC\SPVDEV001 <tri.susilo@altama.co.id>2023-03-31 11:10:27 +0700
commit3ce85149313383bfc064237748e5a80d6e16180d (patch)
treeee7f085aea3d31e415c53e7a3449eca9d906e3ac /src/pages/api
parent902e3ea7e5023e1ed7966369277908a4c04236bd (diff)
change solr and mapping data
Diffstat (limited to 'src/pages/api')
-rw-r--r--src/pages/api/shop/search.js53
-rw-r--r--src/pages/api/shop/suggest.js2
2 files changed, 27 insertions, 28 deletions
diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js
index 3d6b3f26..d6829f6e 100644
--- a/src/pages/api/shop/search.js
+++ b/src/pages/api/shop/search.js
@@ -4,36 +4,35 @@ import camelcaseObjectDeep from 'camelcase-object-deep'
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] : '',
+ id: product.product_id_i || '',
+ image: product.image_s || '',
+ code: product.default_code_s || '',
+ name: product.name_s || '',
lowestPrice: {
- price: product.price ? product.price[0] : 0,
- priceDiscount: product.price_discount ? product.price_discount[0] : 0,
- discountPercentage: product.discount ? product.discount[0] : 0
+ price: product.price_f || 0,
+ priceDiscount: product.discount_f || 0,
+ discountPercentage: product.price_discount_f || 0
},
- variantTotal: product.variant_total ? product.variant_total[0] : 0,
- stockTotal: product.stock_total ? product.stock_total[0] : 0,
- weight: product.weight ? product.weight[0] : 0,
+ variantTotal: product.variant_total_i || 0,
+ stockTotal: product.stock_total_f || 0,
+ weight: product.weight_f || 0,
manufacture: {},
categories: []
}
- if (product.manufacture_id && product.brand) {
+ if (product.manufacture_id_i && product.manufacture_name_s) {
productMapped.manufacture = {
- id: product.manufacture_id ? product.manufacture_id[0] : '',
- name: product.brand ? product.brand[0] : ''
+ id: product.manufacture_id_i || '',
+ name: product.manufacture_name_s || ''
}
}
productMapped.categories = [
{
- id: product.category_id ? product.category_id[0] : '',
- name: product.category_name ? product.category_name[0] : ''
+ id: product.category_id_i || '',
+ name: product.category_name_s || ''
}
]
-
return productMapped
})
}
@@ -54,24 +53,24 @@ export default async function handler(req, res) {
let paramOrderBy = ''
switch (orderBy) {
case 'price-asc':
- paramOrderBy = ', price_discount ASC'
+ paramOrderBy = ', price_discount_f ASC'
break
case 'price-desc':
- paramOrderBy = ', price_discount DESC'
+ paramOrderBy = ', price_discount_f DESC'
break
case 'popular':
- paramOrderBy = ', search_rank DESC'
+ paramOrderBy = ', search_rank_i DESC'
break
case 'stock':
- paramOrderBy = ', stock_total DESC'
+ paramOrderBy = ', stock_total_f DESC'
break
}
let limit = 30
let offset = (page - 1) * limit
let parameter = [
- 'facet.field=brand_str',
- 'facet.field=category_name_str',
+ 'facet.field=manufacture_name_s',
+ 'facet.field=category_name_s',
'facet=true',
'indent=true',
`facet.query=${q}`,
@@ -79,19 +78,19 @@ export default async function handler(req, res) {
`q=${q}`,
`start=${offset}`,
`rows=${limit}`,
- `sort=product_rating DESC ${paramOrderBy}`,
- `fq=price_discount:[${priceFrom == '' ? '*' : priceFrom} TO ${priceTo == '' ? '*' : priceTo}]`
+ `sort=product_rating_f DESC ${paramOrderBy}`,
+ `fq=price_discount_f:[${priceFrom == '' ? '*' : priceFrom} TO ${priceTo == '' ? '*' : priceTo}]`
]
- if (brand) parameter.push(`fq=brand:${brand}`)
- if (category) parameter.push(`fq=category_name:${category}`)
+ if (brand) parameter.push(`fq=manufacture_name_s:${brand}`)
+ if (category) parameter.push(`fq=category_name_s:${category}`)
// Single fq in url params
if (typeof fq === 'string') parameter.push(`fq=${fq}`)
// Multi fq in url params
if (Array.isArray(fq)) parameter = parameter.concat(fq.map((val) => `fq=${val}`))
- let result = await axios(process.env.SOLR_HOST + '/solr/products/select?' + parameter.join('&'))
+ let result = await axios(process.env.SOLR_HOST + '/solr/product/select?' + parameter.join('&'))
try {
result.data.response.products = productResponseMap(result.data.response.docs)
result.data.responseHeader.params.start = parseInt(result.data.responseHeader.params.start)
diff --git a/src/pages/api/shop/suggest.js b/src/pages/api/shop/suggest.js
index cc0ff2b3..5a1b559a 100644
--- a/src/pages/api/shop/suggest.js
+++ b/src/pages/api/shop/suggest.js
@@ -5,7 +5,7 @@ export default async function handler(req, res) {
let result = await axios(
process.env.SOLR_HOST +
- `/solr/products/suggest?suggest=true&suggest.dictionary=mySuggester&suggest.q=${q}`
+ `/solr/product/suggest?suggest=true&suggest.dictionary=mySuggester&suggest.q=${q}`
)
try {
res.status(200).json(result.data.suggest.mySuggester[q])