← back to Tk 11331 Exec

d1_rollback.mjs

19 lines

// UNDO Decision 1 — restore each product's variant order to order_before. --apply to write.
import fs from 'fs';
import {gql,sleep} from './lib.mjs';
const APPLY=process.argv.includes('--apply');
const rows=fs.readFileSync('data/d1-restore-map.jsonl','utf8').trim().split('\n').filter(Boolean).map(l=>JSON.parse(l));
const M=`mutation($pid:ID!,$moves:[ProductVariantPositionInput!]!){
  productVariantsBulkReorder(productId:$pid,positions:$moves){userErrors{field message}}}`;
console.log(`${APPLY?'APPLY':'DRY'} D1 rollback — ${rows.length} products`);
let ok=0,fail=0;
for(const r of rows){
  const moves=r.order_before.map(v=>({id:v.id,position:v.position}));
  if(!APPLY){ console.log(`  would restore ${r.pid}`); continue; }
  const res=await gql(M,{pid:r.gid,moves});
  if(res.productVariantsBulkReorder.userErrors.length){ fail++; console.log(`  ERR ${r.pid}`); }
  else ok++;
  await sleep(400);
}
console.log(`D1 rollback ${APPLY?'APPLIED':'DRY'} ok=${ok} fail=${fail}`);