diff options
| -rw-r--r-- | src/pages/api/shop/product-detail.js | 40 | ||||
| -rw-r--r-- | src/pages/sitemap/products/[page].js | 2 |
2 files changed, 28 insertions, 14 deletions
diff --git a/src/pages/api/shop/product-detail.js b/src/pages/api/shop/product-detail.js index faa96028..043bf8fd 100644 --- a/src/pages/api/shop/product-detail.js +++ b/src/pages/api/shop/product-detail.js @@ -1,26 +1,40 @@ -import { productMappingSolr, variantsMappingSolr } from '@/utils/solrMapping' -import axios from 'axios' +import { productMappingSolr, variantsMappingSolr } from '@/utils/solrMapping'; +import axios from 'axios'; export default async function handler(req, res) { try { let productTemplate = await axios( - process.env.SOLR_HOST + `/solr/product/select?q=id:${req.query.id}&q.op=OR&indent=true` - ) + process.env.SOLR_HOST + + `/solr/product/select?q=id:${req.query.id}&fq=-publish_b:false&rows=1&wt=json` + ); + + const templateDocs = productTemplate?.data?.response?.docs || []; + if (templateDocs.length === 0) { + return res.status(404).json({ error: 'Not Found' }); + } + let productVariants = await axios( process.env.SOLR_HOST + - `/solr/variants/select?q=template_id_i:${req.query.id}&q.op=OR&indent=true&rows=100&fq=-publish_b:false AND price_tier1_v2_f:[1 TO *]` - ) - let auth = req.query.auth === 'false' ? JSON.parse(req.query.auth) : req.query.auth - let result = productMappingSolr(productTemplate.data.response.docs, auth || false) + `/solr/variants/select?q=template_id_i:${req.query.id}&rows=100&wt=json&fq=-publish_b:false AND price_tier1_v2_f:[1 TO *]` + ); + + let auth = + req.query.auth === 'false' ? JSON.parse(req.query.auth) : req.query.auth; + + let result = productMappingSolr(templateDocs, auth || false); result[0].variants = variantsMappingSolr( - productTemplate.data.response.docs[0], + templateDocs[0], productVariants.data.response.docs, auth || false - ) - res.status(200).json(result) + ); + + res.status(200).json(result); } catch (error) { - console.error('Error fetching data from Solr:', error) - res.status(500).json({ error: 'Internal Server Error' }) + console.error('Error fetching data from Solr:', error); + if (error?.response?.status === 404) { + return res.status(404).json({ error: 'Not Found' }); + } + res.status(500).json({ error: 'Internal Server Error' }); } } diff --git a/src/pages/sitemap/products/[page].js b/src/pages/sitemap/products/[page].js index 3419489b..e83102b1 100644 --- a/src/pages/sitemap/products/[page].js +++ b/src/pages/sitemap/products/[page].js @@ -8,7 +8,7 @@ export async function getServerSideProps({ query, res }) { const { page } = query const limit = 2500 const queries = { limit, page: page.replace('.xml', ''), - '-publish_b': false, + 'publish_b': true, product_rating_f: '[8 TO *]', price_tier1_v2_f: '[1 TO *]', } const products = await productSearchApi({ query: _.toQuery(queries) }) |
