← back to Shopify Sample Shipping

restore-priority-sample.mjs

17 lines

// One-command UNDO for the Priority Sample Only removal (reads the pre-delete snapshot).
import {query} from './query.mjs';
import fs from 'node:fs';
const snap=JSON.parse(fs.readFileSync(new URL('./verification/priority-sample-snapshot.json',import.meta.url)));
const m=snap.methodDefinition;
const price=m.rateProvider?.price?.amount || '24.95';
// Rebuild price conditions from the snapshot (Priority Sample Only was $0-$20 subtotal)
const pc=(m.methodConditions||[]).filter(c=>c.conditionCriteria?.__typename==='MoneyV2').map(c=>({operator:c.operator,criteria:{amount:String(c.conditionCriteria.amount),currencyCode:c.conditionCriteria.currencyCode||'USD'}}));
const mut=`mutation($id:ID!,$profile:DeliveryProfileInput!){deliveryProfileUpdate(id:$id,profile:$profile){profile{id} userErrors{field message}}}`;
const profile={locationGroupsToUpdate:[{id:snap.locationGroupId,zonesToUpdate:[{id:snap.zoneId,methodDefinitionsToCreate:[{
  name:m.name, active:true, rateDefinition:{price:{amount:price,currencyCode:'USD'}},
  priceConditionsToCreate: pc.length?pc:[{operator:'GREATER_THAN_OR_EQUAL_TO',criteria:{amount:'0',currencyCode:'USD'}},{operator:'LESS_THAN_OR_EQUAL_TO',criteria:{amount:'20',currencyCode:'USD'}}]
}]}]}]};
const r=await query(mut,{id:snap.profile,profile});
console.log('RESTORE result:',JSON.stringify(r.deliveryProfileUpdate.userErrors));
if(r.deliveryProfileUpdate.userErrors.length) process.exitCode=1; else console.log('Priority Sample Only re-created.');