← back to Dw Silver Mylar Rename
rollback.mjs
28 lines
// UNDO: re-apply the restore-map in reverse — sets title/descriptionHtml BACK to
// the original "Silver Mylar" values. Usage: node rollback.mjs [--ids gid,gid]
import { readFileSync } from 'node:fs';
import { gql } from './lib.mjs';
const rm = JSON.parse(readFileSync(new URL('./data/restore-map.json', import.meta.url)));
const args = process.argv.slice(2);
const idsArg = args.includes('--ids') ? new Set(args[args.indexOf('--ids') + 1].split(',')) : null;
const M = `mutation($input: ProductInput!){
productUpdate(input:$input){ product{ id } userErrors{ field message } }
}`;
let ok = 0, fail = 0;
for (const e of rm.restore) {
if (idsArg && !idsArg.has(e.gid)) continue;
const input = { id: e.gid };
if (e.fields.title) input.title = e.fields.title.to; // .to = original value
if (e.fields.descriptionHtml) input.descriptionHtml = e.fields.descriptionHtml.to;
if (!input.title && !input.descriptionHtml) continue;
try {
const d = await gql(M, { input });
const ue = d.productUpdate.userErrors;
if (ue && ue.length) throw new Error(JSON.stringify(ue));
ok++;
} catch (err) { fail++; console.log('ROLLBACK FAIL', e.gid, String(err.message || err)); }
}
console.log(`rollback DONE ok=${ok} fail=${fail}`);