From 0fb4850dfa7e8de94f54640d3c3094d7240b01a5 Mon Sep 17 00:00:00 2001 From: Rene Fichtmueller Date: Sun, 19 Apr 2026 00:12:18 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20price-comparison=20SKU=20lookup=20?= =?UTF-8?q?=E2=80=94=20wrong=20column=20refs=20(so.stock=5Flevel,=20search?= =?UTF-8?q?=5Furl=5Ftemplate)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/api/src/routes/price-comparison.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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