[object Object]

← back to Designer Wallcoverings

cadence: harden sample-only desc query against newline/tab corruption (SQL regexp_replace)

e38bffd8e827d7571a3b0324a60227a41e2b61fb · 2026-06-23 17:19:55 -0700 · Steve

Files touched

Diff

commit e38bffd8e827d7571a3b0324a60227a41e2b61fb
Author: Steve <steve@designerwallcoverings.com>
Date:   Tue Jun 23 17:19:55 2026 -0700

    cadence: harden sample-only desc query against newline/tab corruption (SQL regexp_replace)
---
 shopify/scripts/cadence/cadence-import.js | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/shopify/scripts/cadence/cadence-import.js b/shopify/scripts/cadence/cadence-import.js
index 6837c23c..b6cbbd17 100644
--- a/shopify/scripts/cadence/cadence-import.js
+++ b/shopify/scripts/cadence/cadence-import.js
@@ -272,7 +272,11 @@ function selectSkus(cfg, limit) {
   // sampleOnly (Quadrille-house, no cost): select net-new rows scoped by brand, NO cost column,
   // NO cost>0 filter. description pulled from ai_description / description for the activation gate.
   if (cfg.sampleOnly) {
-    const descCol = (cfg.colOverrides && cfg.colOverrides.description) || 'COALESCE(ai_description, description)';
+    const rawDescCol = (cfg.colOverrides && cfg.colOverrides.description) || 'COALESCE(ai_description, description)';
+    // psql output is TAB-delimited rows split on \n — a description with an embedded newline/tab/CR
+    // (free-text, enrichment ongoing) would corrupt the row parser. Collapse those control chars to a
+    // space AT THE SQL LEVEL so the tab/newline split stays sound regardless of description content.
+    const descCol = `regexp_replace((${rawDescCol})::text, '[\\t\\n\\r]+', ' ', 'g')`;
     const sql = `SELECT ${cols}, (${descCol})::text AS vendor_desc${allImgSel}
       FROM ${cfg.table}
       WHERE coalesce(shopify_product_id::text,'')=''${brandFilterClause(cfg)}${dedupSkipClause(cfg.table)}

← 9ec5d21e cadence: gate Quadrille-house sample-only drip OFF by defaul  ·  back to Designer Wallcoverings  ·  auto-save: 2026-06-23T17:23:17 (5 files) — shopify/scripts/c d90a2d43 →