← back to Shopify Sample Shipping

find-band.mjs

25 lines

import {query} from './query.mjs';
// Read the General profile with ALL location groups + their location sets
const q=`{deliveryProfile(id:"gid://shopify/DeliveryProfile/29033627699"){name
  profileLocationGroups{
    locationGroup{id locations(first:5){nodes{name}}}
    locationGroupZones(first:30){nodes{zone{id name}
      methodDefinitions(first:40){nodes{id name active
        rateProvider{__typename ... on DeliveryRateDefinition{price{amount}}}
        methodConditions{operator field conditionCriteria{__typename ... on MoneyV2{amount} ... on Weight{value unit}}}}}}}}}}`;
const d=await query(q);
let lgN=0;
for(const g of d.deliveryProfile.profileLocationGroups){
  lgN++;
  console.log(`\n== LOCATION GROUP #${lgN} ${g.locationGroup.id.split('/').pop()} locs:[${g.locationGroup.locations.nodes.map(l=>l.name).join(', ')}]`);
  for(const z of g.locationGroupZones.nodes){
    console.log(`  ZONE ${z.zone.id.split('/').pop()} ${z.zone.name}:`);
    for(const md of z.methodDefinitions.nodes){
      const rp=md.rateProvider;
      const price=rp?.price?`$${rp.price.amount}`:rp?.__typename;
      const conds=md.methodConditions.map(c=>{const cr=c.conditionCriteria;const v=cr?.amount!==undefined?`$${cr.amount}`:(cr?.value!==undefined?`${cr.value}${cr.unit}`:'?');return `${c.field} ${c.operator} ${v}`;}).join(' AND ')||'(none)';
      console.log(`     ${md.id.split('/').pop()} ${md.name} [${md.active?'on':'OFF'}] ${price} {${conds}}`);
    }
  }
}