Add schemas for apparel_order_create event

This commit is contained in:
Dominic Ferrando
2026-07-18 02:18:54 -04:00
parent 6d89a9750b
commit 3d70a8ecc6
+36 -7
View File
@@ -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, {