diff options
| author | HATEC\SPVDEV001 <tri.susilo@altama.co.id> | 2023-09-18 11:08:27 +0700 |
|---|---|---|
| committer | HATEC\SPVDEV001 <tri.susilo@altama.co.id> | 2023-09-18 11:08:27 +0700 |
| commit | 4c6ad774cbb4be9a28af066c9667bd9765826a75 (patch) | |
| tree | 78361d821acec207996afe0795cf6d3e21d4293b /src/pages/api | |
| parent | 8a04a61c1753a1bb20f45f0e70bb2a2158bd0e11 (diff) | |
migrasi category home page ke solr
Diffstat (limited to 'src/pages/api')
| -rw-r--r-- | src/pages/api/shop/product-homepage.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/pages/api/shop/product-homepage.js b/src/pages/api/shop/product-homepage.js new file mode 100644 index 00000000..02c01ee0 --- /dev/null +++ b/src/pages/api/shop/product-homepage.js @@ -0,0 +1,43 @@ +import axios from 'axios' +import { array } from 'yup' + +export default async function handler(req, res) { + try { + const products = [] + let GetproductHomepage = await axios( + process.env.SOLR_HOST + + `/solr/product_category_homepage/select?q=id:${req.query.id}&q.op=OR&indent=true` + ) + let productHomepage = GetproductHomepage.data.response.docs[0] + let idProducts = productHomepage.product_ids + await Promise.all( + idProducts.map(async (id) => { + let product = await axios( + `${process.env.NEXT_PUBLIC_SELF_HOST}/api/shop/product-detail?id=${id}` + ) + if (product && product.data.length > 0) { + products.push(product.data[0]) + } + }) + ) + let result = respoonseMap(productHomepage, products) + res.status(200).json(result) + } catch (error) { + console.error('Error fetching data from Solr:', error) + res.status(500).json({ error: 'Internal Server Error' }) + } +} + +const respoonseMap = (productHomepage, products) => { + let productMapped ={ + id: productHomepage.id, + sequence: productHomepage.sequence_i, + categoryId: productHomepage.category_id_i, + name: productHomepage.name_s, + image: productHomepage.image_s, + url: productHomepage.url_s, + products: products + } + + return productMapped +} |
