summaryrefslogtreecommitdiff
path: root/src/pages/api
diff options
context:
space:
mode:
authorHATEC\SPVDEV001 <tri.susilo@altama.co.id>2023-09-18 11:08:27 +0700
committerHATEC\SPVDEV001 <tri.susilo@altama.co.id>2023-09-18 11:08:27 +0700
commit4c6ad774cbb4be9a28af066c9667bd9765826a75 (patch)
tree78361d821acec207996afe0795cf6d3e21d4293b /src/pages/api
parent8a04a61c1753a1bb20f45f0e70bb2a2158bd0e11 (diff)
migrasi category home page ke solr
Diffstat (limited to 'src/pages/api')
-rw-r--r--src/pages/api/shop/product-homepage.js43
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
+}