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