← back to Majilite Onboard
scripts/probe7.js
18 lines
const fs=require('fs'),path=require('path');
const STORE='designer-laboratory-sandbox.myshopify.com';
const TOKEN=(fs.readFileSync(path.join(process.env.HOME,'Projects/secrets-manager/.env'),'utf8').match(/^SHOPIFY_ADMIN_TOKEN=(.+)$/m)||[])[1].replace(/["']/g,'').trim();
const GQL=`https://${STORE}/admin/api/2024-10/graphql.json`;
const skus=['DWMJ-600042','DWMJ-600048','DWMJ-600062','DWMJ-600065','DWMJ-600088','DWMJ-600090','DWMJ-600102'];
async function gql(q,v){const r=await fetch(GQL,{method:'POST',headers:{'X-Shopify-Access-Token':TOKEN,'Content-Type':'application/json'},body:JSON.stringify({query:q,variables:v})});return r.json();}
(async()=>{
for(const base of skus){
const sku=base+'-Sample';
const d=await gql(`query($q:String!){ productVariants(first:5, query:$q){ nodes{ sku product{ id handle vendor status featuredMedia{id} } } } }`,{q:`sku:${sku}`});
if(d.errors){console.log(base,'ERR',JSON.stringify(d.errors).slice(0,90));continue;}
const n=d.data.productVariants.nodes;
if(!n.length){console.log(base,'→ NO variant with that sku (product at handle is broken/foreign)');}
else n.forEach(x=>console.log(base,'→ FOUND', x.product.handle, x.product.vendor, x.product.status,'img:'+(x.product.featuredMedia?'y':'n'), x.product.id));
await new Promise(r=>setTimeout(r,150));
}
})();