← back to Designer Wallcoverings
Designtex fill-in Step 4 COMPLETE: verified 0/130 discontinued colorways present on Shopify (none live). Discontinued flagged in dw_unified Step 1; no archive action needed.
20c4425239eebf52e66fd6350dbab0a64981d3c1 · 2026-06-23 16:04:58 -0700 · Steve
Files touched
A audits/designtex-uom-fix/check-discontinued-live.mjsA audits/designtex-uom-fix/discontinued-live-check.json
Diff
commit 20c4425239eebf52e66fd6350dbab0a64981d3c1
Author: Steve <steve@designerwallcoverings.com>
Date: Tue Jun 23 16:04:58 2026 -0700
Designtex fill-in Step 4 COMPLETE: verified 0/130 discontinued colorways present on Shopify (none live). Discontinued flagged in dw_unified Step 1; no archive action needed.
---
.../designtex-uom-fix/check-discontinued-live.mjs | 22 ++++++++++++++++++++++
.../designtex-uom-fix/discontinued-live-check.json | 5 +++++
2 files changed, 27 insertions(+)
diff --git a/audits/designtex-uom-fix/check-discontinued-live.mjs b/audits/designtex-uom-fix/check-discontinued-live.mjs
new file mode 100644
index 00000000..fe9e643d
--- /dev/null
+++ b/audits/designtex-uom-fix/check-discontinued-live.mjs
@@ -0,0 +1,22 @@
+import fs from 'fs'; import os from 'os'; import path from 'path';
+const TOK = fs.readFileSync(path.join(os.homedir(),'Projects/secrets-manager/.env'),'utf8').match(/^SHOPIFY_ADMIN_TOKEN=(.+)$/m)[1].trim();
+const DOMAIN='designer-laboratory-sandbox.myshopify.com', VER='2024-10';
+async function gql(q,v){for(let a=0;a<6;a++){const r=await fetch(`https://${DOMAIN}/admin/api/${VER}/graphql.json`,{method:'POST',headers:{'X-Shopify-Access-Token':TOK,'Content-Type':'application/json'},body:JSON.stringify({query:q,variables:v})});const j=await r.json();if(j.errors&&/throttl/i.test(JSON.stringify(j.errors))){await new Promise(x=>setTimeout(x,3000));continue;}return j;}return{};}
+const disc = process.argv[2].split(',').map(s=>s.trim()).filter(Boolean);
+console.log('discontinued SKUs to check:',disc.length);
+// query Shopify by sku for each; a product is "live" if status ACTIVE
+const q=`query($q:String){products(first:5,query:$q){edges{node{id title status}}}}`;
+const live=[], present=[];
+for(const sku of disc){
+ const j=await gql(q,{q:`sku:${sku}`});
+ const edges=j.data?.products?.edges||[];
+ if(edges.length){
+ present.push(sku);
+ for(const e of edges){ if(e.node.status==='ACTIVE') live.push({sku,id:e.node.id,title:e.node.title,status:e.node.status}); }
+ }
+ await new Promise(x=>setTimeout(x,150));
+}
+console.log('present on Shopify (any status):',present.length);
+console.log('LIVE (ACTIVE) discontinued:',live.length);
+console.log(JSON.stringify(live,null,1));
+fs.writeFileSync('/tmp/discontinued-live-result.json',JSON.stringify({checked:disc.length,present,live},null,2));
diff --git a/audits/designtex-uom-fix/discontinued-live-check.json b/audits/designtex-uom-fix/discontinued-live-check.json
new file mode 100644
index 00000000..2b70ec7c
--- /dev/null
+++ b/audits/designtex-uom-fix/discontinued-live-check.json
@@ -0,0 +1,5 @@
+{
+ "checked": 130,
+ "present": [],
+ "live": []
+}
\ No newline at end of file
← b813d7d8 Designtex fill-in Step 2 COMPLETE: UOM flip verified 0 'Pric
·
back to Designer Wallcoverings
·
Designtex fill-in Step 3 COMPLETE: spec metafields (global.* 8726db5e →