feat/parapharmacy-baby-products #31
@@ -62,23 +62,31 @@ export async function searchBabyProducts(query) {
|
|||||||
action: 'process',
|
action: 'process',
|
||||||
},
|
},
|
||||||
timeout: 10000,
|
timeout: 10000,
|
||||||
|
validateStatus: (status) => status === 200,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (response.data && response.data.products) {
|
// Check if response is actually JSON (OFF sometimes returns HTML on error)
|
||||||
const products = response.data.products
|
if (typeof response.data === 'string' || !response.data.products) {
|
||||||
.map(transformOFFProduct)
|
console.warn(`[OFF] Invalid response for "${searchTerm}": API may be down`);
|
||||||
.filter(Boolean);
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
const products = response.data.products
|
||||||
|
.map(transformOFFProduct)
|
||||||
|
.filter(Boolean);
|
||||||
|
|
||||||
|
// Only cache non-empty results to avoid caching API failures
|
||||||
|
if (products.length > 0) {
|
||||||
try {
|
try {
|
||||||
await redisClient.setEx(cacheKey, CACHE_TTL, JSON.stringify(products));
|
await redisClient.setEx(cacheKey, CACHE_TTL, JSON.stringify(products));
|
||||||
console.log(`Cached ${products.length} OFF products for: ${searchTerm}`);
|
console.log(`Cached ${products.length} OFF products for: ${searchTerm}`);
|
||||||
} catch (cacheErr) {
|
} catch (cacheErr) {
|
||||||
// cache write failed, still return the data
|
// cache write failed, still return the data
|
||||||
}
|
}
|
||||||
return products;
|
} else {
|
||||||
|
console.log(`[OFF] No products found for "${searchTerm}", not caching empty result`);
|
||||||
}
|
}
|
||||||
|
return products;
|
||||||
return [];
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error searching baby products from OFF:', error.message);
|
console.error('Error searching baby products from OFF:', error.message);
|
||||||
return [];
|
return [];
|
||||||
|
|||||||
Reference in New Issue
Block a user