← back to York Reprice 2026 08
bolt-check.mjs
10 lines
import fs from 'node:fs';
const SHOP='designer-laboratory-sandbox.myshopify.com',VER='2024-10';
const TOKEN=(fs.readFileSync(process.env.HOME+'/Projects/secrets-manager/.env','utf8').match(/^SHOPIFY_ADMIN_TOKEN=(.+)$/m)||[])[1].trim();
const gql=async(q)=>{const r=await fetch(`https://${SHOP}/admin/api/${VER}/graphql.json`,{method:'POST',headers:{'X-Shopify-Access-Token':TOKEN,'Content-Type':'application/json'},body:JSON.stringify({query:q})});return r.json();};
// existing live grasscloth priced per yard, NOT DWJS-915xx/92xxx (my new ones)
const j=await gql(`query{products(first:30,query:"vendor:'Jeffrey Stevens' status:active grasscloth"){nodes{title variants(first:4){nodes{sku title price}} uom:metafield(namespace:"global",key:"unit_of_measure"){value} mn:metafield(namespace:"global",key:"v_prods_quantity_order_min"){value} un:metafield(namespace:"global",key:"v_prods_quantity_order_units"){value}}}}`);
const rows=j.data.products.nodes.filter(p=>{const s=p.variants.nodes.find(v=>!/sample/i.test(v.sku||''))?.sku||'';const n=parseInt((s.match(/DWJS-(\d+)/)||[])[1]||0);return n<91508;}); // existing only
console.log('existing live JS grasscloth — unit / min / step / roll-option:');
for(const p of rows.slice(0,12)){const roll=p.variants.nodes.find(v=>!/sample/i.test(v.sku||''));console.log(` ${p.title.slice(0,30)} | uom=${p.uom?.value||'-'} | min=${p.mn?.value||'-'} step=${p.un?.value||'-'} | opt="${roll?.title}"`);}