summaryrefslogtreecommitdiff
path: root/src/pages/api/shop/product-homepage.js
blob: 61732c77e3bb4042e016d02f08d79c9b6fbe8ef8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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,
    categoryIds: productHomepage.category_id_ids,
  }

  return productMapped
}