chore: parallelize steps (#7605)
This commit is contained in:
committed by
GitHub
parent
e7005a0aac
commit
1ba887f4c9
@@ -1,6 +1,7 @@
|
||||
import {
|
||||
WorkflowData,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { useRemoteQueryStep } from "../../../common/steps/use-remote-query"
|
||||
@@ -78,10 +79,13 @@ export const addShippingMethodToWorkflow = createWorkflow(
|
||||
const shippingMethods = addShippingMethodToCartStep({
|
||||
shipping_methods: shippingMethodInput,
|
||||
})
|
||||
refreshCartPromotionsStep({ id: input.cart_id })
|
||||
updateTaxLinesStep({
|
||||
cart_or_cart_id: input.cart_id,
|
||||
shipping_methods: shippingMethods,
|
||||
})
|
||||
|
||||
parallelize(
|
||||
refreshCartPromotionsStep({ id: input.cart_id }),
|
||||
updateTaxLinesStep({
|
||||
cart_or_cart_id: input.cart_id,
|
||||
shipping_methods: shippingMethods,
|
||||
})
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -111,10 +111,12 @@ export const addToCartWorkflow = createWorkflow(
|
||||
list: false,
|
||||
}).config({ name: "refetch–cart" })
|
||||
|
||||
refreshCartShippingMethodsStep({ cart })
|
||||
updateTaxLinesStep({ cart_or_cart_id: input.cart.id, items })
|
||||
refreshCartPromotionsStep({ id: input.cart.id })
|
||||
refreshPaymentCollectionForCartStep({ cart_id: input.cart.id })
|
||||
parallelize(
|
||||
refreshCartShippingMethodsStep({ cart }),
|
||||
updateTaxLinesStep({ cart_or_cart_id: input.cart.id, items }),
|
||||
refreshCartPromotionsStep({ id: input.cart.id }),
|
||||
refreshPaymentCollectionForCartStep({ cart_id: input.cart.id })
|
||||
)
|
||||
|
||||
return items
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import { OrderDTO } from "@medusajs/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { useRemoteQueryStep } from "../../../common"
|
||||
@@ -62,14 +63,15 @@ export const completeCartWorkflow = createWorkflow(
|
||||
},
|
||||
})
|
||||
|
||||
reserveInventoryStep(formatedInventoryItems)
|
||||
|
||||
const finalCart = useRemoteQueryStep({
|
||||
entry_point: "cart",
|
||||
fields: completeCartFields,
|
||||
variables: { id: input.id },
|
||||
list: false,
|
||||
}).config({ name: "final-cart" })
|
||||
const [, finalCart] = parallelize(
|
||||
reserveInventoryStep(formatedInventoryItems),
|
||||
useRemoteQueryStep({
|
||||
entry_point: "cart",
|
||||
fields: completeCartFields,
|
||||
variables: { id: input.id },
|
||||
list: false,
|
||||
}).config({ name: "final-cart" })
|
||||
)
|
||||
|
||||
const order = createOrderFromCartStep({ cart: finalCart })
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { CartDTO, CreateCartWorkflowInputDTO } from "@medusajs/types"
|
||||
import { MedusaError } from "@medusajs/utils"
|
||||
import {
|
||||
WorkflowData,
|
||||
createWorkflow,
|
||||
@@ -20,7 +21,6 @@ import { productVariantsFields } from "../utils/fields"
|
||||
import { prepareLineItemData } from "../utils/prepare-line-item-data"
|
||||
import { confirmVariantInventoryWorkflow } from "./confirm-variant-inventory"
|
||||
import { refreshPaymentCollectionForCartStep } from "./refresh-payment-collection"
|
||||
import { MedusaError } from "@medusajs/utils"
|
||||
|
||||
// TODO: The createCartWorkflow are missing the following steps:
|
||||
// - Refresh/delete shipping methods (fulfillment module)
|
||||
@@ -140,14 +140,16 @@ export const createCartWorkflow = createWorkflow(
|
||||
const carts = createCartsStep([cartToCreate])
|
||||
const cart = transform({ carts }, (data) => data.carts?.[0])
|
||||
|
||||
refreshCartPromotionsStep({
|
||||
id: cart.id,
|
||||
promo_codes: input.promo_codes,
|
||||
})
|
||||
updateTaxLinesStep({ cart_or_cart_id: cart.id })
|
||||
refreshPaymentCollectionForCartStep({
|
||||
cart_id: cart.id,
|
||||
})
|
||||
parallelize(
|
||||
refreshCartPromotionsStep({
|
||||
id: cart.id,
|
||||
promo_codes: input.promo_codes,
|
||||
}),
|
||||
updateTaxLinesStep({ cart_or_cart_id: cart.id }),
|
||||
refreshPaymentCollectionForCartStep({
|
||||
cart_id: cart.id,
|
||||
})
|
||||
)
|
||||
|
||||
return cart
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import {
|
||||
WorkflowData,
|
||||
createStep,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { useRemoteQueryStep } from "../../../common/steps/use-remote-query"
|
||||
@@ -55,16 +56,17 @@ export const refreshPaymentCollectionForCartWorkflow = createWorkflow(
|
||||
|
||||
const cart = transform({ carts }, (data) => data.carts[0])
|
||||
|
||||
deletePaymentSessionStep({
|
||||
payment_session_id: cart.payment_collection.payment_sessions?.[0].id,
|
||||
})
|
||||
|
||||
updatePaymentCollectionStep({
|
||||
selector: { id: cart.payment_collection.id },
|
||||
update: {
|
||||
amount: cart.total,
|
||||
currency_code: cart.currency_code,
|
||||
},
|
||||
})
|
||||
parallelize(
|
||||
deletePaymentSessionStep({
|
||||
payment_session_id: cart.payment_collection.payment_sessions?.[0].id,
|
||||
}),
|
||||
updatePaymentCollectionStep({
|
||||
selector: { id: cart.payment_collection.id },
|
||||
update: {
|
||||
amount: cart.total,
|
||||
currency_code: cart.currency_code,
|
||||
},
|
||||
})
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -60,18 +60,16 @@ export const updateCartPromotionsWorkflow = createWorkflow(
|
||||
removeLineItemAdjustmentsStep({ lineItemAdjustmentIdsToRemove }),
|
||||
removeShippingMethodAdjustmentsStep({
|
||||
shippingMethodAdjustmentIdsToRemove,
|
||||
}),
|
||||
createLineItemAdjustmentsStep({ lineItemAdjustmentsToCreate }),
|
||||
createShippingMethodAdjustmentsStep({
|
||||
shippingMethodAdjustmentsToCreate,
|
||||
}),
|
||||
updateCartPromotionsStep({
|
||||
id: input.cartId,
|
||||
promo_codes: computedPromotionCodes,
|
||||
action: PromotionActions.REPLACE,
|
||||
})
|
||||
)
|
||||
|
||||
parallelize(
|
||||
createLineItemAdjustmentsStep({ lineItemAdjustmentsToCreate }),
|
||||
createShippingMethodAdjustmentsStep({ shippingMethodAdjustmentsToCreate })
|
||||
)
|
||||
|
||||
updateCartPromotionsStep({
|
||||
id: input.cartId,
|
||||
promo_codes: computedPromotionCodes,
|
||||
action: PromotionActions.REPLACE,
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -80,16 +80,17 @@ export const updateCartWorkflow = createWorkflow(
|
||||
list: false,
|
||||
}).config({ name: "refetch–cart" })
|
||||
|
||||
refreshCartShippingMethodsStep({ cart })
|
||||
updateTaxLinesStep({ cart_or_cart_id: carts[0].id })
|
||||
refreshCartPromotionsStep({
|
||||
id: input.id,
|
||||
promo_codes: input.promo_codes,
|
||||
action: PromotionActions.REPLACE,
|
||||
})
|
||||
|
||||
refreshPaymentCollectionForCartStep({
|
||||
cart_id: input.id,
|
||||
})
|
||||
parallelize(
|
||||
refreshCartShippingMethodsStep({ cart }),
|
||||
updateTaxLinesStep({ cart_or_cart_id: carts[0].id }),
|
||||
refreshCartPromotionsStep({
|
||||
id: input.id,
|
||||
promo_codes: input.promo_codes,
|
||||
action: PromotionActions.REPLACE,
|
||||
}),
|
||||
refreshPaymentCollectionForCartStep({
|
||||
cart_id: input.id,
|
||||
})
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -2,6 +2,7 @@ import { UpdateLineItemInCartWorkflowInputDTO } from "@medusajs/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { useRemoteQueryStep } from "../../../common/steps/use-remote-query"
|
||||
@@ -86,9 +87,11 @@ export const updateLineItemInCartWorkflow = createWorkflow(
|
||||
list: false,
|
||||
}).config({ name: "refetch–cart" })
|
||||
|
||||
refreshCartShippingMethodsStep({ cart })
|
||||
refreshCartPromotionsStep({ id: input.cart.id })
|
||||
refreshPaymentCollectionForCartStep({ cart_id: input.cart.id })
|
||||
parallelize(
|
||||
refreshCartShippingMethodsStep({ cart }),
|
||||
refreshCartPromotionsStep({ id: input.cart.id }),
|
||||
refreshPaymentCollectionForCartStep({ cart_id: input.cart.id })
|
||||
)
|
||||
|
||||
const updatedItem = transform({ result }, (data) => data.result?.[0])
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
WorkflowData,
|
||||
createStep,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { useRemoteQueryStep } from "../../common"
|
||||
@@ -125,24 +126,26 @@ export const cancelOrderFulfillmentWorkflow = createWorkflow(
|
||||
return order.fulfillments.find((f) => f.id === input.fulfillment_id)!
|
||||
})
|
||||
|
||||
cancelFulfillmentWorkflow.runAsStep({
|
||||
input: {
|
||||
id: input.fulfillment_id,
|
||||
},
|
||||
})
|
||||
|
||||
const cancelOrderFulfillmentData = transform(
|
||||
{ order, fulfillment },
|
||||
prepareCancelOrderFulfillmentData
|
||||
)
|
||||
|
||||
cancelOrderFulfillmentStep(cancelOrderFulfillmentData)
|
||||
|
||||
const { inventoryAdjustment } = transform(
|
||||
{ order, fulfillment },
|
||||
prepareInventoryUpdate
|
||||
)
|
||||
|
||||
adjustInventoryLevelsStep(inventoryAdjustment)
|
||||
parallelize(
|
||||
cancelOrderFulfillmentStep(cancelOrderFulfillmentData),
|
||||
adjustInventoryLevelsStep(inventoryAdjustment)
|
||||
)
|
||||
|
||||
// last step because there is no compensation for this step
|
||||
cancelFulfillmentWorkflow.runAsStep({
|
||||
input: {
|
||||
id: input.fulfillment_id,
|
||||
},
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
WorkflowData,
|
||||
createStep,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { useRemoteQueryStep } from "../../common"
|
||||
@@ -112,7 +113,6 @@ export const cancelOrderWorkflow = createWorkflow(
|
||||
const lineItemIds = transform({ order }, ({ order }) => {
|
||||
return order.items?.map((i) => i.id)
|
||||
})
|
||||
deleteReservationsByLineItemsStep(lineItemIds)
|
||||
|
||||
const paymentIds = transform({ order }, ({ order }) => {
|
||||
return deepFlatMap(
|
||||
@@ -123,8 +123,11 @@ export const cancelOrderWorkflow = createWorkflow(
|
||||
}
|
||||
)
|
||||
})
|
||||
cancelPaymentStep({ paymentIds })
|
||||
|
||||
cancelOrdersStep({ orderIds: [order.id] })
|
||||
parallelize(
|
||||
deleteReservationsByLineItemsStep(lineItemIds),
|
||||
cancelPaymentStep({ paymentIds }),
|
||||
cancelOrdersStep({ orderIds: [order.id] })
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -261,8 +261,6 @@ export const createOrderFulfillmentWorkflow = createWorkflow(
|
||||
prepareRegisterOrderFulfillmentData
|
||||
)
|
||||
|
||||
registerOrderFulfillmentStep(registerOrderFulfillmentData)
|
||||
|
||||
const link = transform(
|
||||
{ order_id: input.order_id, fulfillment },
|
||||
(data) => {
|
||||
@@ -274,7 +272,6 @@ export const createOrderFulfillmentWorkflow = createWorkflow(
|
||||
]
|
||||
}
|
||||
)
|
||||
createRemoteLinkStep(link)
|
||||
|
||||
const { toDelete, toUpdate, inventoryAdjustment } = transform(
|
||||
{ order, reservations, input },
|
||||
@@ -282,6 +279,8 @@ export const createOrderFulfillmentWorkflow = createWorkflow(
|
||||
)
|
||||
|
||||
parallelize(
|
||||
registerOrderFulfillmentStep(registerOrderFulfillmentData),
|
||||
createRemoteLinkStep(link),
|
||||
updateReservationsStep(toUpdate),
|
||||
deleteReservationsStep(toDelete),
|
||||
adjustInventoryLevelsStep(inventoryAdjustment)
|
||||
|
||||
@@ -19,6 +19,7 @@ import {
|
||||
WorkflowData,
|
||||
createStep,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { createRemoteLinkStep, useRemoteQueryStep } from "../../common"
|
||||
@@ -295,18 +296,6 @@ export const createReturnOrderWorkflow = createWorkflow(
|
||||
prepareShippingMethodData
|
||||
)
|
||||
|
||||
createReturnStep({
|
||||
order_id: input.order_id,
|
||||
items: input.items,
|
||||
shipping_method: shippingMethodData,
|
||||
created_by: input.created_by,
|
||||
})
|
||||
|
||||
updateOrderTaxLinesStep({
|
||||
order_id: input.order_id,
|
||||
shipping_methods: [shippingMethodData as any], // The types does not seems correct in that step and expect too many things compared to the actual needs
|
||||
})
|
||||
|
||||
const fulfillmentData = transform(
|
||||
{ order, input, returnShippingOption },
|
||||
prepareFulfillmentData
|
||||
@@ -326,6 +315,19 @@ export const createReturnOrderWorkflow = createWorkflow(
|
||||
]
|
||||
}
|
||||
)
|
||||
createRemoteLinkStep(link)
|
||||
|
||||
parallelize(
|
||||
createReturnStep({
|
||||
order_id: input.order_id,
|
||||
items: input.items,
|
||||
shipping_method: shippingMethodData,
|
||||
created_by: input.created_by,
|
||||
}),
|
||||
updateOrderTaxLinesStep({
|
||||
order_id: input.order_id,
|
||||
shipping_methods: [shippingMethodData as any], // The types does not seems correct in that step and expect too many things compared to the actual needs
|
||||
}),
|
||||
createRemoteLinkStep(link)
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
WorkflowData,
|
||||
createStep,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { useRemoteQueryStep } from "../../common"
|
||||
@@ -95,15 +96,16 @@ export const createOrderShipmentWorkflow = createWorkflow(
|
||||
}
|
||||
})
|
||||
|
||||
createShipmentWorkflow.runAsStep({
|
||||
input: fulfillmentData,
|
||||
})
|
||||
|
||||
const shipmentData = transform(
|
||||
{ order, input },
|
||||
prepareRegisterShipmentData
|
||||
)
|
||||
|
||||
registerOrderShipmentStep(shipmentData)
|
||||
parallelize(
|
||||
createShipmentWorkflow.runAsStep({
|
||||
input: fulfillmentData,
|
||||
}),
|
||||
registerOrderShipmentStep(shipmentData)
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import { Modules } from "@medusajs/modules-sdk"
|
||||
import {
|
||||
WorkflowData,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { Modules } from "@medusajs/modules-sdk"
|
||||
import { removeRemoteLinkStep } from "../../common"
|
||||
import { deleteProductsStep } from "../steps/delete-products"
|
||||
import { getProductsStep } from "../steps/get-products"
|
||||
import { removeRemoteLinkStep } from "../../common"
|
||||
|
||||
type WorkflowInput = { ids: string[] }
|
||||
|
||||
@@ -21,14 +22,16 @@ export const deleteProductsWorkflow = createWorkflow(
|
||||
.map((variant) => variant.id)
|
||||
})
|
||||
|
||||
removeRemoteLinkStep({
|
||||
[Modules.PRODUCT]: { variant_id: variantsToBeDeleted },
|
||||
}).config({ name: "remove-variant-link-step" })
|
||||
const [, deletedProduct] = parallelize(
|
||||
removeRemoteLinkStep({
|
||||
[Modules.PRODUCT]: {
|
||||
variant_id: variantsToBeDeleted,
|
||||
product_id: input.ids,
|
||||
},
|
||||
}).config({ name: "remove-product-variant-link-step" }),
|
||||
deleteProductsStep(input.ids)
|
||||
)
|
||||
|
||||
removeRemoteLinkStep({
|
||||
[Modules.PRODUCT]: { product_id: input.ids },
|
||||
}).config({ name: "remove-product-link-step" })
|
||||
|
||||
return deleteProductsStep(input.ids)
|
||||
return deletedProduct
|
||||
}
|
||||
)
|
||||
|
||||
@@ -166,13 +166,13 @@ export const updateProductsWorkflow = createWorkflow(
|
||||
|
||||
const toDeleteLinks = transform({ currentLinks }, prepareToDeleteLinks)
|
||||
|
||||
dismissRemoteLinkStep(toDeleteLinks)
|
||||
|
||||
const salesChannelLinks = transform(
|
||||
{ input, updatedProducts },
|
||||
prepareSalesChannelLinks
|
||||
)
|
||||
|
||||
dismissRemoteLinkStep(toDeleteLinks)
|
||||
|
||||
createRemoteLinkStep(salesChannelLinks)
|
||||
|
||||
return updatedProducts
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
import { LinkWorkflowInput } from "@medusajs/types"
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import {
|
||||
WorkflowData,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import {
|
||||
addCampaignPromotionsStep,
|
||||
removeCampaignPromotionsStep,
|
||||
@@ -10,7 +14,9 @@ export const addOrRemoveCampaignPromotionsWorkflowId =
|
||||
export const addOrRemoveCampaignPromotionsWorkflow = createWorkflow(
|
||||
addOrRemoveCampaignPromotionsWorkflowId,
|
||||
(input: WorkflowData<LinkWorkflowInput>): WorkflowData<void> => {
|
||||
addCampaignPromotionsStep(input)
|
||||
removeCampaignPromotionsStep(input)
|
||||
parallelize(
|
||||
addCampaignPromotionsStep(input),
|
||||
removeCampaignPromotionsStep(input)
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user