summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pages/api/shop/product-detail.js40
-rw-r--r--src/pages/sitemap/products/[page].js2
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) })