← back to Dw Width Fix

rollback.mjs

13 lines

import fs from 'fs';
const env=Object.fromEntries(fs.readFileSync('.env','utf8').split('\n').filter(l=>l.includes('=')&&!l.startsWith('#')).map(l=>{const i=l.indexOf('=');return [l.slice(0,i).trim(),l.slice(i+1).trim()];}));
const TOKEN=env.SHOPIFY_ADMIN_TOKEN;const API='https://designer-laboratory-sandbox.myshopify.com/admin/api/2024-10/graphql.json';
async function gql(q,v={}){const r=await fetch(API,{method:'POST',headers:{'X-Shopify-Access-Token':TOKEN,'Content-Type':'application/json'},body:JSON.stringify({query:q,variables:v})});return (await r.json()).data;}
const rm=JSON.parse(fs.readFileSync('restore-map.json','utf8'));
const M=`mutation($mf:[MetafieldsSetInput!]!){metafieldsSet(metafields:$mf){metafields{value} userErrors{message}}}`;
for(const [id,e] of Object.entries(rm)){
  if(e.oldValue==null){ console.log('SKIP (was null)',e.handle); continue; }
  const res=await gql(M,{mf:[{ownerId:id,namespace:'custom',key:'width',type:'single_line_text_field',value:e.oldValue}]});
  console.log('RESTORED',e.handle,'->',JSON.stringify(e.oldValue), res.metafieldsSet.userErrors);
  await new Promise(r=>setTimeout(r,400));
}