Add schemas for apparel_order_create event
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { Printful, PrintfulClient, ProductSyncer, Webflow, WebflowClient } from "@blade-and-brawn/commerce";
|
||||
import { PrintfulClient, ProductSyncer, WebflowClient } from "@blade-and-brawn/commerce";
|
||||
import { env, log } from "../util";
|
||||
import { db } from "../database/db";
|
||||
import { defineEventType, EventQueue } from "./event-queue";
|
||||
@@ -57,10 +57,29 @@ class ApparelOrdersService {
|
||||
},
|
||||
types: {
|
||||
"apparel_order_create": defineEventType({
|
||||
schemas: { payload: t.Object({ wOrder: t.Object({}) }), state: t.Null() },
|
||||
dedupeKey: (p) => (p.wOrder as Webflow.Orders.Order).orderId,
|
||||
schemas: {
|
||||
payload: t.Object({
|
||||
wOrder: t.Object({
|
||||
orderId: t.String(),
|
||||
shippingAddress: t.Object({
|
||||
addressee: t.String(),
|
||||
line1: t.String(),
|
||||
line2: t.String(),
|
||||
city: t.String(),
|
||||
country: t.String(),
|
||||
postalCode: t.String(),
|
||||
}),
|
||||
purchasedItems: t.Array(t.Object({
|
||||
variantId: t.String(),
|
||||
count: t.Number(),
|
||||
})),
|
||||
})
|
||||
}),
|
||||
state: t.Null()
|
||||
},
|
||||
dedupeKey: (p) => p.wOrder.orderId,
|
||||
processor: async (payload) => {
|
||||
const wOrder = payload.wOrder as Webflow.Orders.Order;
|
||||
const wOrder = payload.wOrder;
|
||||
|
||||
const stateCode = zipcodesUs.find(
|
||||
wOrder.shippingAddress.postalCode.split("-")[0] ?? "",
|
||||
@@ -92,11 +111,21 @@ class ApparelOrdersService {
|
||||
}
|
||||
}),
|
||||
"apparel_order_fulfill": defineEventType({
|
||||
schemas: { payload: t.Object({ wOrderId: t.String(), shipment: t.Object({}) }), state: t.Null() },
|
||||
dedupeKey: (p) => `${p.wOrderId}:${(p.shipment as Printful.Webhook.PackageShipped["data"]["shipment"]).tracking_number}`,
|
||||
schemas: {
|
||||
payload: t.Object({
|
||||
wOrderId: t.String(),
|
||||
shipment: t.Object({
|
||||
carrier: t.String(),
|
||||
tracking_number: t.String(),
|
||||
tracking_url: t.String(),
|
||||
})
|
||||
}),
|
||||
state: t.Null()
|
||||
},
|
||||
dedupeKey: (p) => `${p.wOrderId}:${p.shipment.tracking_number}`,
|
||||
processor: async (payload) => {
|
||||
const wOrderId = payload.wOrderId;
|
||||
const shipment = payload.shipment as Printful.Webhook.PackageShipped["data"]["shipment"];
|
||||
const shipment = payload.shipment;
|
||||
log.info({ wOrderId, carrier: shipment.carrier, tracking: shipment.tracking_number }, "printful webhook: package shipped");
|
||||
|
||||
await this.Webflow.Orders.update(wOrderId, {
|
||||
|
||||
Reference in New Issue
Block a user