diff --git a/packages/api/src/routes/price-comparison.ts b/packages/api/src/routes/price-comparison.ts index 3b05690..7c4ad08 100644 --- a/packages/api/src/routes/price-comparison.ts +++ b/packages/api/src/routes/price-comparison.ts @@ -181,10 +181,10 @@ priceComparisonRouter.get("/:sku", async (req: Request, res: Response) => { po.price, po.currency, po.stock_level, - -- Prefer stock_observations for latest stock info + -- Prefer stock_observations for latest stock info (in_stock is boolean) COALESCE( ( - SELECT so.stock_level + SELECT CASE WHEN so.in_stock THEN 'in_stock' ELSE 'out_of_stock' END FROM stock_observations so WHERE so.transceiver_id = po.transceiver_id AND so.source_vendor_id = po.source_vendor_id @@ -193,10 +193,11 @@ priceComparisonRouter.get("/:sku", async (req: Request, res: Response) => { ), po.stock_level ) AS stock_level, - -- Build product URL: use vendor search_url_template if no direct url + -- Use direct product URL from price observation, fall back to vendor shop/website COALESCE( - v.search_url_template, - v.website_url + po.url, + v.shop_url, + v.website ) AS url, po.time AS observed_at FROM ( @@ -206,6 +207,7 @@ priceComparisonRouter.get("/:sku", async (req: Request, res: Response) => { po.price, po.currency, po.stock_level, + po.url, po.time FROM price_observations po WHERE po.transceiver_id = $1