feat: add hooks to product module's workflows (#8389)
This commit is contained in:
@@ -4,6 +4,7 @@ import { batchLinkProductsToCollectionStep } from "../steps/batch-link-products-
|
||||
|
||||
export const batchLinkProductsToCollectionWorkflowId =
|
||||
"batch-link-products-to-collection"
|
||||
|
||||
export const batchLinkProductsToCollectionWorkflow = createWorkflow(
|
||||
batchLinkProductsToCollectionWorkflowId,
|
||||
(input: WorkflowData<LinkWorkflowInput>): WorkflowData<void> => {
|
||||
|
||||
@@ -2,18 +2,28 @@ import { ProductTypes } from "@medusajs/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { createCollectionsStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { collections: ProductTypes.CreateProductCollectionDTO[] }
|
||||
type WorkflowInput = {
|
||||
collections: ProductTypes.CreateProductCollectionDTO[]
|
||||
additional_data?: Record<string, unknown>
|
||||
}
|
||||
|
||||
export const createCollectionsWorkflowId = "create-collections"
|
||||
export const createCollectionsWorkflow = createWorkflow(
|
||||
createCollectionsWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowResponse<ProductTypes.ProductCollectionDTO[]> => {
|
||||
return new WorkflowResponse(createCollectionsStep(input.collections))
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const collections = createCollectionsStep(input.collections)
|
||||
const collectionsCreated = createHook("collectionsCreated", {
|
||||
collections,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(collections, {
|
||||
hooks: [collectionsCreated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -2,18 +2,29 @@ import { ProductTypes } from "@medusajs/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { createProductOptionsStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { product_options: ProductTypes.CreateProductOptionDTO[] }
|
||||
type WorkflowInput = {
|
||||
product_options: ProductTypes.CreateProductOptionDTO[]
|
||||
additional_data?: Record<string, unknown>
|
||||
}
|
||||
|
||||
export const createProductOptionsWorkflowId = "create-product-options"
|
||||
|
||||
export const createProductOptionsWorkflow = createWorkflow(
|
||||
createProductOptionsWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowResponse<ProductTypes.ProductOptionDTO[]> => {
|
||||
return new WorkflowResponse(createProductOptionsStep(input.product_options))
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const productOptions = createProductOptionsStep(input.product_options)
|
||||
const productOptionsCreated = createHook("productOptionsCreated", {
|
||||
product_options: productOptions,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(productOptions, {
|
||||
hooks: [productOptionsCreated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -2,18 +2,29 @@ import { ProductTypes } from "@medusajs/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { createProductTagsStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { product_tags: ProductTypes.CreateProductTagDTO[] }
|
||||
type WorkflowInput = {
|
||||
product_tags: ProductTypes.CreateProductTagDTO[]
|
||||
additional_data?: Record<string, unknown>
|
||||
}
|
||||
|
||||
export const createProductTagsWorkflowId = "create-product-tags"
|
||||
|
||||
export const createProductTagsWorkflow = createWorkflow(
|
||||
createProductTagsWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowResponse<ProductTypes.ProductTagDTO[]> => {
|
||||
return new WorkflowResponse(createProductTagsStep(input.product_tags))
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const productTags = createProductTagsStep(input.product_tags)
|
||||
const productTagsCreated = createHook("productTagsCreated", {
|
||||
product_tags: productTags,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(productTags, {
|
||||
hooks: [productTagsCreated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -2,18 +2,29 @@ import { ProductTypes } from "@medusajs/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { createProductTypesStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { product_types: ProductTypes.CreateProductTypeDTO[] }
|
||||
type WorkflowInput = {
|
||||
product_types: ProductTypes.CreateProductTypeDTO[]
|
||||
additional_data?: Record<string, unknown>
|
||||
}
|
||||
|
||||
export const createProductTypesWorkflowId = "create-product-types"
|
||||
|
||||
export const createProductTypesWorkflow = createWorkflow(
|
||||
createProductTypesWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowResponse<ProductTypes.ProductTypeDTO[]> => {
|
||||
return new WorkflowResponse(createProductTypesStep(input.product_types))
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const productTypes = createProductTypesStep(input.product_types)
|
||||
const productTypesCreated = createHook("productTypesCreated", {
|
||||
product_types: productTypes,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(productTypes, {
|
||||
hooks: [productTypesCreated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -3,6 +3,7 @@ import { InventoryTypes, PricingTypes, ProductTypes } from "@medusajs/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
transform,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
@@ -24,6 +25,7 @@ type WorkflowInput = {
|
||||
required_quantity?: number
|
||||
}[]
|
||||
})[]
|
||||
additional_data?: Record<string, unknown>
|
||||
}
|
||||
|
||||
const buildLink = (
|
||||
@@ -118,11 +120,10 @@ const buildVariantItemCreateMap = (data: {
|
||||
}
|
||||
|
||||
export const createProductVariantsWorkflowId = "create-product-variants"
|
||||
|
||||
export const createProductVariantsWorkflow = createWorkflow(
|
||||
createProductVariantsWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowResponse<ProductTypes.ProductVariantDTO[]> => {
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
// Passing prices to the product module will fail, we want to keep them for after the variant is created.
|
||||
const variantsWithoutPrices = transform({ input }, (data) =>
|
||||
data.input.product_variants.map((v) => ({
|
||||
@@ -224,6 +225,13 @@ export const createProductVariantsWorkflow = createWorkflow(
|
||||
}
|
||||
)
|
||||
|
||||
return new WorkflowResponse(response)
|
||||
const productVariantsCreated = createHook("productVariantsCreated", {
|
||||
product_variants: response,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(response, {
|
||||
hooks: [productVariantsCreated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -7,6 +7,7 @@ import { isPresent } from "@medusajs/utils"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
transform,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
@@ -16,14 +17,14 @@ import { createProductVariantsWorkflow } from "./create-product-variants"
|
||||
|
||||
type WorkflowInput = {
|
||||
products: CreateProductWorkflowInputDTO[]
|
||||
additional_data?: Record<string, unknown>
|
||||
}
|
||||
|
||||
export const createProductsWorkflowId = "create-products"
|
||||
|
||||
export const createProductsWorkflow = createWorkflow(
|
||||
createProductsWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowResponse<ProductTypes.ProductDTO[]> => {
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
// Passing prices to the product module will fail, we want to keep them for after the product is created.
|
||||
const productWithoutExternalRelations = transform({ input }, (data) =>
|
||||
data.input.products.map((p) => ({
|
||||
@@ -98,6 +99,13 @@ export const createProductsWorkflow = createWorkflow(
|
||||
}
|
||||
)
|
||||
|
||||
return new WorkflowResponse(response)
|
||||
const productsCreated = createHook("productsCreated", {
|
||||
products: response,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(response, {
|
||||
hooks: [productsCreated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,12 +1,25 @@
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { deleteCollectionsStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { ids: string[] }
|
||||
|
||||
export const deleteCollectionsWorkflowId = "delete-collections"
|
||||
|
||||
export const deleteCollectionsWorkflow = createWorkflow(
|
||||
deleteCollectionsWorkflowId,
|
||||
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
|
||||
return deleteCollectionsStep(input.ids)
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const deletedCollections = deleteCollectionsStep(input.ids)
|
||||
const collectionsDeleted = createHook("collectionsDeleted", {
|
||||
ids: input.ids,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(deletedCollections, {
|
||||
hooks: [collectionsDeleted],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { deleteProductOptionsStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { ids: string[] }
|
||||
@@ -6,7 +11,14 @@ type WorkflowInput = { ids: string[] }
|
||||
export const deleteProductOptionsWorkflowId = "delete-product-options"
|
||||
export const deleteProductOptionsWorkflow = createWorkflow(
|
||||
deleteProductOptionsWorkflowId,
|
||||
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
|
||||
return deleteProductOptionsStep(input.ids)
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const deletedProductOptions = deleteProductOptionsStep(input.ids)
|
||||
const productOptionsDeleted = createHook("productOptionsDeleted", {
|
||||
ids: input.ids,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(deletedProductOptions, {
|
||||
hooks: [productOptionsDeleted],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { deleteProductTagsStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { ids: string[] }
|
||||
@@ -6,7 +11,14 @@ type WorkflowInput = { ids: string[] }
|
||||
export const deleteProductTagsWorkflowId = "delete-product-tags"
|
||||
export const deleteProductTagsWorkflow = createWorkflow(
|
||||
deleteProductTagsWorkflowId,
|
||||
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
|
||||
return deleteProductTagsStep(input.ids)
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const deletedProductTags = deleteProductTagsStep(input.ids)
|
||||
const productTagsDeleted = createHook("productTagsDeleted", {
|
||||
ids: input.ids,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(deletedProductTags, {
|
||||
hooks: [productTagsDeleted],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { deleteProductTypesStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { ids: string[] }
|
||||
@@ -6,7 +11,14 @@ type WorkflowInput = { ids: string[] }
|
||||
export const deleteProductTypesWorkflowId = "delete-product-types"
|
||||
export const deleteProductTypesWorkflow = createWorkflow(
|
||||
deleteProductTypesWorkflowId,
|
||||
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
|
||||
return deleteProductTypesStep(input.ids)
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const deletedProductTypes = deleteProductTypesStep(input.ids)
|
||||
const productTypesDeleted = createHook("productTypesDeleted", {
|
||||
ids: input.ids,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(deletedProductTypes, {
|
||||
hooks: [productTypesDeleted],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
import { createWorkflow, WorkflowData } from "@medusajs/workflows-sdk"
|
||||
import {
|
||||
createHook,
|
||||
createWorkflow,
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { deleteProductVariantsStep } from "../steps"
|
||||
import { removeRemoteLinkStep } from "../../common"
|
||||
import { Modules } from "@medusajs/utils"
|
||||
@@ -8,11 +13,18 @@ type WorkflowInput = { ids: string[] }
|
||||
export const deleteProductVariantsWorkflowId = "delete-product-variants"
|
||||
export const deleteProductVariantsWorkflow = createWorkflow(
|
||||
deleteProductVariantsWorkflowId,
|
||||
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
removeRemoteLinkStep({
|
||||
[Modules.PRODUCT]: { variant_id: input.ids },
|
||||
}).config({ name: "remove-variant-link-step" })
|
||||
|
||||
return deleteProductVariantsStep(input.ids)
|
||||
const deletedProductVariants = deleteProductVariantsStep(input.ids)
|
||||
const productVariantsDeleted = createHook("productVariantsDeleted", {
|
||||
ids: input.ids,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(deletedProductVariants, {
|
||||
hooks: [productVariantsDeleted],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import {
|
||||
createHook,
|
||||
createWorkflow,
|
||||
parallelize,
|
||||
transform,
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { removeRemoteLinkStep } from "../../common"
|
||||
import { deleteProductsStep } from "../steps/delete-products"
|
||||
@@ -14,7 +16,7 @@ type WorkflowInput = { ids: string[] }
|
||||
export const deleteProductsWorkflowId = "delete-products"
|
||||
export const deleteProductsWorkflow = createWorkflow(
|
||||
deleteProductsWorkflowId,
|
||||
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const productsToDelete = getProductsStep({ ids: input.ids })
|
||||
const variantsToBeDeleted = transform({ productsToDelete }, (data) => {
|
||||
return data.productsToDelete
|
||||
@@ -32,6 +34,12 @@ export const deleteProductsWorkflow = createWorkflow(
|
||||
deleteProductsStep(input.ids)
|
||||
)
|
||||
|
||||
return deletedProduct
|
||||
const productsDeleted = createHook("productsDeleted", {
|
||||
ids: input.ids,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(deletedProduct, {
|
||||
hooks: [productsDeleted],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -2,6 +2,7 @@ import { ProductTypes } from "@medusajs/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { updateCollectionsStep } from "../steps"
|
||||
@@ -9,6 +10,7 @@ import { updateCollectionsStep } from "../steps"
|
||||
type UpdateCollectionsStepInput = {
|
||||
selector: ProductTypes.FilterableProductCollectionProps
|
||||
update: ProductTypes.UpdateProductCollectionDTO
|
||||
additional_data?: Record<string, unknown>
|
||||
}
|
||||
|
||||
type WorkflowInput = UpdateCollectionsStepInput
|
||||
@@ -16,9 +18,15 @@ type WorkflowInput = UpdateCollectionsStepInput
|
||||
export const updateCollectionsWorkflowId = "update-collections"
|
||||
export const updateCollectionsWorkflow = createWorkflow(
|
||||
updateCollectionsWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowResponse<ProductTypes.ProductCollectionDTO[]> => {
|
||||
return new WorkflowResponse(updateCollectionsStep(input))
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const updatedCollections = updateCollectionsStep(input)
|
||||
const collectionsUpdated = createHook("collectionsUpdated", {
|
||||
additional_data: input.additional_data,
|
||||
collections: updateCollectionsStep,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(updatedCollections, {
|
||||
hooks: [collectionsUpdated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -2,6 +2,7 @@ import { ProductTypes } from "@medusajs/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { updateProductOptionsStep } from "../steps"
|
||||
@@ -9,6 +10,7 @@ import { updateProductOptionsStep } from "../steps"
|
||||
type UpdateProductOptionsStepInput = {
|
||||
selector: ProductTypes.FilterableProductOptionProps
|
||||
update: ProductTypes.UpdateProductOptionDTO
|
||||
additional_data?: Record<string, unknown>
|
||||
}
|
||||
|
||||
type WorkflowInput = UpdateProductOptionsStepInput
|
||||
@@ -16,9 +18,15 @@ type WorkflowInput = UpdateProductOptionsStepInput
|
||||
export const updateProductOptionsWorkflowId = "update-product-options"
|
||||
export const updateProductOptionsWorkflow = createWorkflow(
|
||||
updateProductOptionsWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowResponse<ProductTypes.ProductOptionDTO[]> => {
|
||||
return new WorkflowResponse(updateProductOptionsStep(input))
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const updatedProductOptions = updateProductOptionsStep(input)
|
||||
const productOptionsUpdated = createHook("productOptionsUpdated", {
|
||||
product_options: updatedProductOptions,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(updatedProductOptions, {
|
||||
hooks: [productOptionsUpdated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -2,6 +2,7 @@ import { ProductTypes } from "@medusajs/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { updateProductTagsStep } from "../steps"
|
||||
@@ -9,6 +10,7 @@ import { updateProductTagsStep } from "../steps"
|
||||
type UpdateProductTagsStepInput = {
|
||||
selector: ProductTypes.FilterableProductTypeProps
|
||||
update: ProductTypes.UpdateProductTypeDTO
|
||||
additional_data?: Record<string, unknown>
|
||||
}
|
||||
|
||||
type WorkflowInput = UpdateProductTagsStepInput
|
||||
@@ -16,9 +18,14 @@ type WorkflowInput = UpdateProductTagsStepInput
|
||||
export const updateProductTagsWorkflowId = "update-product-tags"
|
||||
export const updateProductTagsWorkflow = createWorkflow(
|
||||
updateProductTagsWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowResponse<ProductTypes.ProductTagDTO[]> => {
|
||||
return new WorkflowResponse(updateProductTagsStep(input))
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const updatedProductTags = updateProductTagsStep(input)
|
||||
const productTagsUpdated = createHook("productTagsUpdated", {
|
||||
product_tags: updatedProductTags,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
return new WorkflowResponse(updatedProductTags, {
|
||||
hooks: [productTagsUpdated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -2,6 +2,7 @@ import { ProductTypes } from "@medusajs/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
import { updateProductTypesStep } from "../steps"
|
||||
@@ -9,6 +10,7 @@ import { updateProductTypesStep } from "../steps"
|
||||
type UpdateProductTypesStepInput = {
|
||||
selector: ProductTypes.FilterableProductTypeProps
|
||||
update: ProductTypes.UpdateProductTypeDTO
|
||||
additional_data?: Record<string, unknown>
|
||||
}
|
||||
|
||||
type WorkflowInput = UpdateProductTypesStepInput
|
||||
@@ -16,9 +18,15 @@ type WorkflowInput = UpdateProductTypesStepInput
|
||||
export const updateProductTypesWorkflowId = "update-product-types"
|
||||
export const updateProductTypesWorkflow = createWorkflow(
|
||||
updateProductTypesWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowResponse<ProductTypes.ProductTypeDTO[]> => {
|
||||
return new WorkflowResponse(updateProductTypesStep(input))
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const updatedProductTypes = updateProductTypesStep(input)
|
||||
const productTypesUpdated = createHook("productTypesUpdated", {
|
||||
product_types: updatedProductTypes,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(updatedProductTypes, {
|
||||
hooks: [productTypesUpdated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -2,6 +2,7 @@ import { PricingTypes, ProductTypes } from "@medusajs/types"
|
||||
import {
|
||||
WorkflowData,
|
||||
WorkflowResponse,
|
||||
createHook,
|
||||
createWorkflow,
|
||||
transform,
|
||||
} from "@medusajs/workflows-sdk"
|
||||
@@ -22,14 +23,14 @@ type UpdateProductVariantsStepInput =
|
||||
})[]
|
||||
}
|
||||
|
||||
type WorkflowInput = UpdateProductVariantsStepInput
|
||||
type WorkflowInput = UpdateProductVariantsStepInput & {
|
||||
additional_data?: Record<string, unknown>
|
||||
}
|
||||
|
||||
export const updateProductVariantsWorkflowId = "update-product-variants"
|
||||
export const updateProductVariantsWorkflow = createWorkflow(
|
||||
updateProductVariantsWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowResponse<ProductTypes.ProductVariantDTO[]> => {
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
// Passing prices to the product module will fail, we want to keep them for after the variant is updated.
|
||||
const updateWithoutPrices = transform({ input }, (data) => {
|
||||
if ("product_variants" in data.input) {
|
||||
@@ -120,7 +121,7 @@ export const updateProductVariantsWorkflow = createWorkflow(
|
||||
updatedPriceSets,
|
||||
},
|
||||
(data) => {
|
||||
return data.updatedVariants.map((variant, i) => {
|
||||
return data.updatedVariants.map((variant) => {
|
||||
const linkForVariant = data.variantPriceSetLinks?.find(
|
||||
(link) => link.variant_id === variant.id
|
||||
)
|
||||
@@ -134,6 +135,13 @@ export const updateProductVariantsWorkflow = createWorkflow(
|
||||
}
|
||||
)
|
||||
|
||||
return new WorkflowResponse(response)
|
||||
const productVariantsUpdated = createHook("productVariantsUpdated", {
|
||||
product_variants: response,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(response, {
|
||||
hooks: [productVariantsUpdated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
@@ -7,6 +7,7 @@ import {
|
||||
} from "@medusajs/types"
|
||||
import { arrayDifference, Modules } from "@medusajs/utils"
|
||||
import {
|
||||
createHook,
|
||||
createWorkflow,
|
||||
transform,
|
||||
WorkflowData,
|
||||
@@ -26,6 +27,7 @@ type UpdateProductsStepInputSelector = {
|
||||
sales_channels?: { id: string }[]
|
||||
variants?: UpdateProductVariantWorkflowInputDTO[]
|
||||
}
|
||||
additional_data?: Record<string, unknown>
|
||||
}
|
||||
|
||||
type UpdateProductsStepInputProducts = {
|
||||
@@ -33,6 +35,7 @@ type UpdateProductsStepInputProducts = {
|
||||
sales_channels?: { id: string }[]
|
||||
variants?: UpdateProductVariantWorkflowInputDTO[]
|
||||
})[]
|
||||
additional_data?: Record<string, unknown>
|
||||
}
|
||||
|
||||
type UpdateProductsStepInput =
|
||||
@@ -210,9 +213,7 @@ function prepareToDeleteSalesChannelLinks({
|
||||
export const updateProductsWorkflowId = "update-products"
|
||||
export const updateProductsWorkflow = createWorkflow(
|
||||
updateProductsWorkflowId,
|
||||
(
|
||||
input: WorkflowData<WorkflowInput>
|
||||
): WorkflowResponse<ProductTypes.ProductDTO[]> => {
|
||||
(input: WorkflowData<WorkflowInput>) => {
|
||||
const previousVariantIds = getVariantIdsForProductsStep(input)
|
||||
|
||||
const toUpdateInput = transform({ input }, prepareUpdateProductInput)
|
||||
@@ -248,9 +249,15 @@ export const updateProductsWorkflow = createWorkflow(
|
||||
})
|
||||
|
||||
dismissRemoteLinkStep(toDeleteSalesChannelLinks)
|
||||
|
||||
createRemoteLinkStep(salesChannelLinks)
|
||||
|
||||
return new WorkflowResponse(updatedProducts)
|
||||
const productsUpdated = createHook("productsUpdated", {
|
||||
products: updatedProducts,
|
||||
additional_data: input.additional_data,
|
||||
})
|
||||
|
||||
return new WorkflowResponse(updatedProducts, {
|
||||
hooks: [productsUpdated],
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user