← back to Shopify Sample Shipping

remove-priority-sample.mjs

32 lines

import {query} from './query.mjs';
import fs from 'node:fs';
const PROFILE='gid://shopify/DeliveryProfile/29033627699';
// 1) Read full structure to locate Priority Sample Only + its owning locationGroup/zone ids
const rq=`query($id:ID!){deliveryProfile(id:$id){profileLocationGroups{
  locationGroup{id}
  locationGroupZones(first:20){nodes{ zone{id name}
    methodDefinitions(first:30){nodes{id name active
      rateProvider{__typename ... on DeliveryRateDefinition{id price{amount currencyCode}}}
      methodConditions{operator conditionCriteria{__typename ... on Weight{value unit} ... on MoneyV2{amount currencyCode}}}}}}}}}}`;
const d=await query(rq,{id:PROFILE});
let target=null, lgId=null, zoneId=null;
for(const g of d.deliveryProfile.profileLocationGroups){
  for(const z of g.locationGroupZones.nodes){
    for(const m of z.methodDefinitions.nodes){
      if(m.name==='Priority Sample Only'){ target=m; lgId=g.locationGroup.id; zoneId=z.zone.id; }
    }
  }
}
if(!target){ console.log('ABORT: "Priority Sample Only" not found — nothing to remove.'); process.exit(0); }
// 2) SNAPSHOT (for reversible undo)
const snap={ removedAt:new Date().toISOString(), profile:PROFILE, locationGroupId:lgId, zoneId, zoneName:'Domestic', methodDefinition:target };
fs.writeFileSync(new URL('./verification/priority-sample-snapshot.json',import.meta.url), JSON.stringify(snap,null,2)+'\n');
console.log('SNAPSHOT saved. Target method definition id =', target.id, '| price', target.rateProvider?.price);
// 3) DELETE the method definition
const mut=`mutation($id:ID!,$profile:DeliveryProfileInput!){deliveryProfileUpdate(id:$id,profile:$profile){profile{id name} userErrors{field message}}}`;
const profile={ methodDefinitionsToDelete:[target.id] };
const r=await query(mut,{id:PROFILE,profile});
fs.writeFileSync(new URL('./verification/priority-sample-delete-result.json',import.meta.url), JSON.stringify(r,null,2)+'\n');
console.log('DELETE result:', JSON.stringify(r.deliveryProfileUpdate.userErrors));
if(r.deliveryProfileUpdate.userErrors.length) process.exitCode=1;