From f9a8fcc0bc5370425861d03e14c67180dc7a252e Mon Sep 17 00:00:00 2001 From: Shahed Nasser Date: Thu, 8 Aug 2024 21:14:10 +0300 Subject: [PATCH] chore(core-flows): [13] export types and steps, add basic TSDocs (#8523) --- .../batch-link-products-collection.ts | 3 +++ .../workflows/batch-product-variants.ts | 3 +++ .../workflows/batch-products-in-category.ts | 3 +++ .../src/product/workflows/batch-products.ts | 3 +++ .../product/workflows/create-collections.ts | 7 +++-- .../workflows/create-product-options.ts | 8 +++--- .../product/workflows/create-product-tags.ts | 8 +++--- .../product/workflows/create-product-types.ts | 8 +++--- .../workflows/create-product-variants.ts | 17 +++++++----- .../src/product/workflows/create-products.ts | 8 +++--- .../product/workflows/delete-collections.ts | 8 +++--- .../workflows/delete-product-options.ts | 7 +++-- .../product/workflows/delete-product-tags.ts | 7 +++-- .../product/workflows/delete-product-types.ts | 7 +++-- .../workflows/delete-product-variants.ts | 7 +++-- .../src/product/workflows/delete-products.ts | 7 +++-- .../src/product/workflows/export-products.ts | 3 +++ .../src/product/workflows/import-products.ts | 3 +++ .../product/workflows/update-collections.ts | 9 ++++--- .../workflows/update-product-options.ts | 9 ++++--- .../product/workflows/update-product-tags.ts | 9 ++++--- .../product/workflows/update-product-types.ts | 9 ++++--- .../workflows/update-product-variants.ts | 9 ++++--- .../src/product/workflows/update-products.ts | 27 ++++++++++--------- .../workflows/upsert-variant-prices.ts | 7 +++-- 25 files changed, 128 insertions(+), 68 deletions(-) diff --git a/packages/core/core-flows/src/product/workflows/batch-link-products-collection.ts b/packages/core/core-flows/src/product/workflows/batch-link-products-collection.ts index 586e23bc09..ca03fb6338 100644 --- a/packages/core/core-flows/src/product/workflows/batch-link-products-collection.ts +++ b/packages/core/core-flows/src/product/workflows/batch-link-products-collection.ts @@ -5,6 +5,9 @@ import { batchLinkProductsToCollectionStep } from "../steps/batch-link-products- export const batchLinkProductsToCollectionWorkflowId = "batch-link-products-to-collection" +/** + * This workflow creates links between product and collection records. + */ export const batchLinkProductsToCollectionWorkflow = createWorkflow( batchLinkProductsToCollectionWorkflowId, (input: WorkflowData): WorkflowData => { diff --git a/packages/core/core-flows/src/product/workflows/batch-product-variants.ts b/packages/core/core-flows/src/product/workflows/batch-product-variants.ts index ff264a6ab7..0383cf259a 100644 --- a/packages/core/core-flows/src/product/workflows/batch-product-variants.ts +++ b/packages/core/core-flows/src/product/workflows/batch-product-variants.ts @@ -17,6 +17,9 @@ import { updateProductVariantsWorkflow } from "./update-product-variants" import { deleteProductVariantsWorkflow } from "./delete-product-variants" export const batchProductVariantsWorkflowId = "batch-product-variants" +/** + * This workflow creates, updates, and deletes product variants. + */ export const batchProductVariantsWorkflow = createWorkflow( batchProductVariantsWorkflowId, ( diff --git a/packages/core/core-flows/src/product/workflows/batch-products-in-category.ts b/packages/core/core-flows/src/product/workflows/batch-products-in-category.ts index e16a04f5df..7218cbb7e5 100644 --- a/packages/core/core-flows/src/product/workflows/batch-products-in-category.ts +++ b/packages/core/core-flows/src/product/workflows/batch-products-in-category.ts @@ -4,6 +4,9 @@ import { batchLinkProductsToCategoryStep } from "../steps/batch-link-products-in export const batchLinkProductsToCategoryWorkflowId = "batch-link-products-to-category" +/** + * This workflow creates links between product and category records. + */ export const batchLinkProductsToCategoryWorkflow = createWorkflow( batchLinkProductsToCategoryWorkflowId, ( diff --git a/packages/core/core-flows/src/product/workflows/batch-products.ts b/packages/core/core-flows/src/product/workflows/batch-products.ts index e3ec99d9cf..6e3caed661 100644 --- a/packages/core/core-flows/src/product/workflows/batch-products.ts +++ b/packages/core/core-flows/src/product/workflows/batch-products.ts @@ -17,6 +17,9 @@ import { deleteProductsWorkflow } from "./delete-products" import { updateProductsWorkflow } from "./update-products" export const batchProductsWorkflowId = "batch-products" +/** + * This workflow creates, updates, or deletes products. + */ export const batchProductsWorkflow = createWorkflow( batchProductsWorkflowId, ( diff --git a/packages/core/core-flows/src/product/workflows/create-collections.ts b/packages/core/core-flows/src/product/workflows/create-collections.ts index 4773f7b607..de80d18006 100644 --- a/packages/core/core-flows/src/product/workflows/create-collections.ts +++ b/packages/core/core-flows/src/product/workflows/create-collections.ts @@ -7,14 +7,17 @@ import { } from "@medusajs/workflows-sdk" import { createCollectionsStep } from "../steps" -type WorkflowInput = { +export type CreateCollectionsWorkflowInput = { collections: ProductTypes.CreateProductCollectionDTO[] } & AdditionalData export const createCollectionsWorkflowId = "create-collections" +/** + * This workflow creates one or more collections. + */ export const createCollectionsWorkflow = createWorkflow( createCollectionsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { const collections = createCollectionsStep(input.collections) const collectionsCreated = createHook("collectionsCreated", { collections, diff --git a/packages/core/core-flows/src/product/workflows/create-product-options.ts b/packages/core/core-flows/src/product/workflows/create-product-options.ts index da7828112b..26896e2550 100644 --- a/packages/core/core-flows/src/product/workflows/create-product-options.ts +++ b/packages/core/core-flows/src/product/workflows/create-product-options.ts @@ -7,15 +7,17 @@ import { } from "@medusajs/workflows-sdk" import { createProductOptionsStep } from "../steps" -type WorkflowInput = { +export type CreateProductOptionsWorkflowInput = { product_options: ProductTypes.CreateProductOptionDTO[] } & AdditionalData export const createProductOptionsWorkflowId = "create-product-options" - +/** + * This workflow creates one or more product options. + */ export const createProductOptionsWorkflow = createWorkflow( createProductOptionsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { const productOptions = createProductOptionsStep(input.product_options) const productOptionsCreated = createHook("productOptionsCreated", { product_options: productOptions, diff --git a/packages/core/core-flows/src/product/workflows/create-product-tags.ts b/packages/core/core-flows/src/product/workflows/create-product-tags.ts index ac5660168c..092b584007 100644 --- a/packages/core/core-flows/src/product/workflows/create-product-tags.ts +++ b/packages/core/core-flows/src/product/workflows/create-product-tags.ts @@ -7,15 +7,17 @@ import { } from "@medusajs/workflows-sdk" import { createProductTagsStep } from "../steps" -type WorkflowInput = { +export type CreateProductTagsWorkflowInput = { product_tags: ProductTypes.CreateProductTagDTO[] } & AdditionalData export const createProductTagsWorkflowId = "create-product-tags" - +/** + * This workflow creates one or more product tags. + */ export const createProductTagsWorkflow = createWorkflow( createProductTagsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { const productTags = createProductTagsStep(input.product_tags) const productTagsCreated = createHook("productTagsCreated", { product_tags: productTags, diff --git a/packages/core/core-flows/src/product/workflows/create-product-types.ts b/packages/core/core-flows/src/product/workflows/create-product-types.ts index 65a41a9221..8c9014df12 100644 --- a/packages/core/core-flows/src/product/workflows/create-product-types.ts +++ b/packages/core/core-flows/src/product/workflows/create-product-types.ts @@ -7,15 +7,17 @@ import { } from "@medusajs/workflows-sdk" import { createProductTypesStep } from "../steps" -type WorkflowInput = { +export type CreateProductTypesWorkflowInput = { product_types: ProductTypes.CreateProductTypeDTO[] } & AdditionalData export const createProductTypesWorkflowId = "create-product-types" - +/** + * This workflow creates one or more product types. + */ export const createProductTypesWorkflow = createWorkflow( createProductTypesWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { const productTypes = createProductTypesStep(input.product_types) const productTypesCreated = createHook("productTypesCreated", { product_types: productTypes, diff --git a/packages/core/core-flows/src/product/workflows/create-product-variants.ts b/packages/core/core-flows/src/product/workflows/create-product-variants.ts index 2ebb6d1cd6..dd9b000fc0 100644 --- a/packages/core/core-flows/src/product/workflows/create-product-variants.ts +++ b/packages/core/core-flows/src/product/workflows/create-product-variants.ts @@ -20,8 +20,11 @@ import { createProductVariantsStep } from "../steps/create-product-variants" import { createVariantPricingLinkStep } from "../steps/create-variant-pricing-link" import { Modules } from "@medusajs/utils" -// TODO: Create separate typings for the workflow input -type WorkflowInput = { +/** + * @privateRemarks + * TODO: Create separate typings for the workflow input + */ +export type CreateProductVariantsWorkflowInput = { product_variants: (ProductTypes.CreateProductVariantDTO & { prices?: PricingTypes.CreateMoneyAmountDTO[] } & { @@ -49,7 +52,7 @@ const buildLink = ( const buildLinksToCreate = (data: { createdVariants: ProductTypes.ProductVariantDTO[] inventoryIndexMap: Record - input: WorkflowInput + input: CreateProductVariantsWorkflowInput }) => { let index = 0 const linksToCreate: LinkDefinition[] = [] @@ -88,7 +91,7 @@ const buildLinksToCreate = (data: { const buildVariantItemCreateMap = (data: { createdVariants: ProductTypes.ProductVariantDTO[] - input: WorkflowInput + input: CreateProductVariantsWorkflowInput }) => { let index = 0 const map: Record = {} @@ -124,10 +127,12 @@ const buildVariantItemCreateMap = (data: { } export const createProductVariantsWorkflowId = "create-product-variants" - +/** + * This workflow creates one or more product variants. + */ export const createProductVariantsWorkflow = createWorkflow( createProductVariantsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { // 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) => ({ diff --git a/packages/core/core-flows/src/product/workflows/create-products.ts b/packages/core/core-flows/src/product/workflows/create-products.ts index f7a5fe6d47..78a2df85bf 100644 --- a/packages/core/core-flows/src/product/workflows/create-products.ts +++ b/packages/core/core-flows/src/product/workflows/create-products.ts @@ -16,15 +16,17 @@ import { associateProductsWithSalesChannelsStep } from "../../sales-channel" import { createProductsStep } from "../steps/create-products" import { createProductVariantsWorkflow } from "./create-product-variants" -type WorkflowInput = { +export type CreateProductsWorkflowInput = { products: CreateProductWorkflowInputDTO[] } & AdditionalData export const createProductsWorkflowId = "create-products" - +/** + * This workflow creates one or more products. + */ export const createProductsWorkflow = createWorkflow( createProductsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { // 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) => ({ diff --git a/packages/core/core-flows/src/product/workflows/delete-collections.ts b/packages/core/core-flows/src/product/workflows/delete-collections.ts index e5fe903a1f..1fd3505d0e 100644 --- a/packages/core/core-flows/src/product/workflows/delete-collections.ts +++ b/packages/core/core-flows/src/product/workflows/delete-collections.ts @@ -6,13 +6,15 @@ import { } from "@medusajs/workflows-sdk" import { deleteCollectionsStep } from "../steps" -type WorkflowInput = { ids: string[] } +export type DeleteCollectionsWorkflowInput = { ids: string[] } export const deleteCollectionsWorkflowId = "delete-collections" - +/** + * This workflow deletes one or more collection. + */ export const deleteCollectionsWorkflow = createWorkflow( deleteCollectionsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { const deletedCollections = deleteCollectionsStep(input.ids) const collectionsDeleted = createHook("collectionsDeleted", { ids: input.ids, diff --git a/packages/core/core-flows/src/product/workflows/delete-product-options.ts b/packages/core/core-flows/src/product/workflows/delete-product-options.ts index 10f850aff8..20d3119643 100644 --- a/packages/core/core-flows/src/product/workflows/delete-product-options.ts +++ b/packages/core/core-flows/src/product/workflows/delete-product-options.ts @@ -6,12 +6,15 @@ import { } from "@medusajs/workflows-sdk" import { deleteProductOptionsStep } from "../steps" -type WorkflowInput = { ids: string[] } +export type DeleteProductOptionsWorkflowInput = { ids: string[] } export const deleteProductOptionsWorkflowId = "delete-product-options" +/** + * This workflow deletes one or more product options. + */ export const deleteProductOptionsWorkflow = createWorkflow( deleteProductOptionsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { const deletedProductOptions = deleteProductOptionsStep(input.ids) const productOptionsDeleted = createHook("productOptionsDeleted", { ids: input.ids, diff --git a/packages/core/core-flows/src/product/workflows/delete-product-tags.ts b/packages/core/core-flows/src/product/workflows/delete-product-tags.ts index b2789b093b..c507a85bfd 100644 --- a/packages/core/core-flows/src/product/workflows/delete-product-tags.ts +++ b/packages/core/core-flows/src/product/workflows/delete-product-tags.ts @@ -6,12 +6,15 @@ import { } from "@medusajs/workflows-sdk" import { deleteProductTagsStep } from "../steps" -type WorkflowInput = { ids: string[] } +export type DeleteProductTagsWorkflowInput = { ids: string[] } export const deleteProductTagsWorkflowId = "delete-product-tags" +/** + * This workflow deletes one or more product tags. + */ export const deleteProductTagsWorkflow = createWorkflow( deleteProductTagsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { const deletedProductTags = deleteProductTagsStep(input.ids) const productTagsDeleted = createHook("productTagsDeleted", { ids: input.ids, diff --git a/packages/core/core-flows/src/product/workflows/delete-product-types.ts b/packages/core/core-flows/src/product/workflows/delete-product-types.ts index 9c114d5dc6..ff13ee42a0 100644 --- a/packages/core/core-flows/src/product/workflows/delete-product-types.ts +++ b/packages/core/core-flows/src/product/workflows/delete-product-types.ts @@ -6,12 +6,15 @@ import { } from "@medusajs/workflows-sdk" import { deleteProductTypesStep } from "../steps" -type WorkflowInput = { ids: string[] } +export type DeleteProductTypesWorkflowInput = { ids: string[] } export const deleteProductTypesWorkflowId = "delete-product-types" +/** + * This workflow deletes one or more product types. + */ export const deleteProductTypesWorkflow = createWorkflow( deleteProductTypesWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { const deletedProductTypes = deleteProductTypesStep(input.ids) const productTypesDeleted = createHook("productTypesDeleted", { ids: input.ids, diff --git a/packages/core/core-flows/src/product/workflows/delete-product-variants.ts b/packages/core/core-flows/src/product/workflows/delete-product-variants.ts index 7384da8f7e..50b72759a3 100644 --- a/packages/core/core-flows/src/product/workflows/delete-product-variants.ts +++ b/packages/core/core-flows/src/product/workflows/delete-product-variants.ts @@ -8,12 +8,15 @@ import { deleteProductVariantsStep } from "../steps" import { removeRemoteLinkStep } from "../../common" import { Modules } from "@medusajs/utils" -type WorkflowInput = { ids: string[] } +export type DeleteProductVariantsWorkflowInput = { ids: string[] } export const deleteProductVariantsWorkflowId = "delete-product-variants" +/** + * This workflow deletes one or more product variants. + */ export const deleteProductVariantsWorkflow = createWorkflow( deleteProductVariantsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { removeRemoteLinkStep({ [Modules.PRODUCT]: { variant_id: input.ids }, }).config({ name: "remove-variant-link-step" }) diff --git a/packages/core/core-flows/src/product/workflows/delete-products.ts b/packages/core/core-flows/src/product/workflows/delete-products.ts index 5593023bee..f278d2c9ef 100644 --- a/packages/core/core-flows/src/product/workflows/delete-products.ts +++ b/packages/core/core-flows/src/product/workflows/delete-products.ts @@ -11,12 +11,15 @@ import { deleteProductsStep } from "../steps/delete-products" import { getProductsStep } from "../steps/get-products" import { Modules } from "@medusajs/utils" -type WorkflowInput = { ids: string[] } +export type DeleteProductsWorkflowInput = { ids: string[] } export const deleteProductsWorkflowId = "delete-products" +/** + * This workflow deletes one or more products. + */ export const deleteProductsWorkflow = createWorkflow( deleteProductsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { const productsToDelete = getProductsStep({ ids: input.ids }) const variantsToBeDeleted = transform({ productsToDelete }, (data) => { return data.productsToDelete diff --git a/packages/core/core-flows/src/product/workflows/export-products.ts b/packages/core/core-flows/src/product/workflows/export-products.ts index 07d492e7ed..4fab1b8dc6 100644 --- a/packages/core/core-flows/src/product/workflows/export-products.ts +++ b/packages/core/core-flows/src/product/workflows/export-products.ts @@ -9,6 +9,9 @@ import { useRemoteQueryStep } from "../../common" import { notifyOnFailureStep, sendNotificationsStep } from "../../notification" export const exportProductsWorkflowId = "export-products" +/** + * This workflow exports products matching the specified filters. + */ export const exportProductsWorkflow = createWorkflow( exportProductsWorkflowId, ( diff --git a/packages/core/core-flows/src/product/workflows/import-products.ts b/packages/core/core-flows/src/product/workflows/import-products.ts index d547119100..86fa6f761e 100644 --- a/packages/core/core-flows/src/product/workflows/import-products.ts +++ b/packages/core/core-flows/src/product/workflows/import-products.ts @@ -14,6 +14,9 @@ import { import { batchProductsWorkflow } from "./batch-products" export const importProductsWorkflowId = "import-products" +/** + * This workflow imports products from a CSV file. + */ export const importProductsWorkflow = createWorkflow( importProductsWorkflowId, ( diff --git a/packages/core/core-flows/src/product/workflows/update-collections.ts b/packages/core/core-flows/src/product/workflows/update-collections.ts index 3336d4f9c7..a6566f4c24 100644 --- a/packages/core/core-flows/src/product/workflows/update-collections.ts +++ b/packages/core/core-flows/src/product/workflows/update-collections.ts @@ -7,17 +7,18 @@ import { } from "@medusajs/workflows-sdk" import { updateCollectionsStep } from "../steps" -type UpdateCollectionsStepInput = { +export type UpdateCollectionsWorkflowInput = { selector: ProductTypes.FilterableProductCollectionProps update: ProductTypes.UpdateProductCollectionDTO } & AdditionalData -type WorkflowInput = UpdateCollectionsStepInput - export const updateCollectionsWorkflowId = "update-collections" +/** + * This workflow updates collections matching the specified filters. + */ export const updateCollectionsWorkflow = createWorkflow( updateCollectionsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { const updatedCollections = updateCollectionsStep(input) const collectionsUpdated = createHook("collectionsUpdated", { additional_data: input.additional_data, diff --git a/packages/core/core-flows/src/product/workflows/update-product-options.ts b/packages/core/core-flows/src/product/workflows/update-product-options.ts index 50e5563062..f2d86be331 100644 --- a/packages/core/core-flows/src/product/workflows/update-product-options.ts +++ b/packages/core/core-flows/src/product/workflows/update-product-options.ts @@ -7,17 +7,18 @@ import { } from "@medusajs/workflows-sdk" import { updateProductOptionsStep } from "../steps" -type UpdateProductOptionsStepInput = { +export type UpdateProductOptionsWorkflowInput = { selector: ProductTypes.FilterableProductOptionProps update: ProductTypes.UpdateProductOptionDTO } & AdditionalData -type WorkflowInput = UpdateProductOptionsStepInput - export const updateProductOptionsWorkflowId = "update-product-options" +/** + * This workflow updates product options matching the specified filters. + */ export const updateProductOptionsWorkflow = createWorkflow( updateProductOptionsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { const updatedProductOptions = updateProductOptionsStep(input) const productOptionsUpdated = createHook("productOptionsUpdated", { product_options: updatedProductOptions, diff --git a/packages/core/core-flows/src/product/workflows/update-product-tags.ts b/packages/core/core-flows/src/product/workflows/update-product-tags.ts index 541af26b02..4dc675f77b 100644 --- a/packages/core/core-flows/src/product/workflows/update-product-tags.ts +++ b/packages/core/core-flows/src/product/workflows/update-product-tags.ts @@ -7,17 +7,18 @@ import { } from "@medusajs/workflows-sdk" import { updateProductTagsStep } from "../steps" -type UpdateProductTagsStepInput = { +export type UpdateProductTagsWorkflowInput = { selector: ProductTypes.FilterableProductTypeProps update: ProductTypes.UpdateProductTypeDTO } & AdditionalData -type WorkflowInput = UpdateProductTagsStepInput - export const updateProductTagsWorkflowId = "update-product-tags" +/** + * This workflow updates product tags matching the specified filters. + */ export const updateProductTagsWorkflow = createWorkflow( updateProductTagsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { const updatedProductTags = updateProductTagsStep(input) const productTagsUpdated = createHook("productTagsUpdated", { product_tags: updatedProductTags, diff --git a/packages/core/core-flows/src/product/workflows/update-product-types.ts b/packages/core/core-flows/src/product/workflows/update-product-types.ts index 278f90d45f..db37082a33 100644 --- a/packages/core/core-flows/src/product/workflows/update-product-types.ts +++ b/packages/core/core-flows/src/product/workflows/update-product-types.ts @@ -7,17 +7,18 @@ import { } from "@medusajs/workflows-sdk" import { updateProductTypesStep } from "../steps" -type UpdateProductTypesStepInput = { +type UpdateProductTypesWorkflowInput = { selector: ProductTypes.FilterableProductTypeProps update: ProductTypes.UpdateProductTypeDTO } & AdditionalData -type WorkflowInput = UpdateProductTypesStepInput - export const updateProductTypesWorkflowId = "update-product-types" +/** + * This workflow updates product types matching the specified filters. + */ export const updateProductTypesWorkflow = createWorkflow( updateProductTypesWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { const updatedProductTypes = updateProductTypesStep(input) const productTypesUpdated = createHook("productTypesUpdated", { product_types: updatedProductTypes, diff --git a/packages/core/core-flows/src/product/workflows/update-product-variants.ts b/packages/core/core-flows/src/product/workflows/update-product-variants.ts index 3324a1da5c..41f271226a 100644 --- a/packages/core/core-flows/src/product/workflows/update-product-variants.ts +++ b/packages/core/core-flows/src/product/workflows/update-product-variants.ts @@ -10,7 +10,7 @@ import { updateProductVariantsStep } from "../steps" import { updatePriceSetsStep } from "../../pricing" import { getVariantPricingLinkStep } from "../steps/get-variant-pricing-link" -type UpdateProductVariantsStepInput = +export type UpdateProductVariantsWorkflowInput = | { selector: ProductTypes.FilterableProductVariantProps update: ProductTypes.UpdateProductVariantDTO & { @@ -23,12 +23,13 @@ type UpdateProductVariantsStepInput = })[] } -type WorkflowInput = UpdateProductVariantsStepInput & AdditionalData - export const updateProductVariantsWorkflowId = "update-product-variants" +/** + * This workflow updates one or more product variants. + */ export const updateProductVariantsWorkflow = createWorkflow( updateProductVariantsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { // 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) { diff --git a/packages/core/core-flows/src/product/workflows/update-products.ts b/packages/core/core-flows/src/product/workflows/update-products.ts index 6d0aec3849..ccf5357beb 100644 --- a/packages/core/core-flows/src/product/workflows/update-products.ts +++ b/packages/core/core-flows/src/product/workflows/update-products.ts @@ -21,7 +21,7 @@ import { } from "../../common" import { upsertVariantPricesWorkflow } from "./upsert-variant-prices" -type UpdateProductsStepInputSelector = { +export type UpdateProductsWorkflowInputSelector = { selector: ProductTypes.FilterableProductProps update: Omit & { sales_channels?: { id: string }[] @@ -29,24 +29,22 @@ type UpdateProductsStepInputSelector = { } } & AdditionalData -type UpdateProductsStepInputProducts = { +export type UpdateProductsWorkflowInputProducts = { products: (Omit & { sales_channels?: { id: string }[] variants?: UpdateProductVariantWorkflowInputDTO[] })[] } & AdditionalData -type UpdateProductsStepInput = - | UpdateProductsStepInputSelector - | UpdateProductsStepInputProducts - -type WorkflowInput = UpdateProductsStepInput +export type UpdateProductWorkflowInput = + | UpdateProductsWorkflowInputSelector + | UpdateProductsWorkflowInputProducts function prepareUpdateProductInput({ input, }: { - input: WorkflowInput -}): UpdateProductsStepInput { + input: UpdateProductWorkflowInput +}): UpdateProductWorkflowInput { if ("products" in input) { if (!input.products.length) { return { products: [] } @@ -82,7 +80,7 @@ function updateProductIds({ input, }: { updatedProducts: ProductTypes.ProductDTO[] - input: WorkflowInput + input: UpdateProductWorkflowInput }) { let productIds = updatedProducts.map((p) => p.id) @@ -101,7 +99,7 @@ function prepareSalesChannelLinks({ updatedProducts, }: { updatedProducts: ProductTypes.ProductDTO[] - input: WorkflowInput + input: UpdateProductWorkflowInput }): Record>[] { if ("products" in input) { if (!input.products.length) { @@ -143,7 +141,7 @@ function prepareVariantPrices({ updatedProducts, }: { updatedProducts: ProductTypes.ProductDTO[] - input: WorkflowInput + input: UpdateProductWorkflowInput }): { variant_id: string product_id: string @@ -209,9 +207,12 @@ function prepareToDeleteSalesChannelLinks({ } export const updateProductsWorkflowId = "update-products" +/** + * This workflow updates one or more products. + */ export const updateProductsWorkflow = createWorkflow( updateProductsWorkflowId, - (input: WorkflowData) => { + (input: WorkflowData) => { // We only get the variant ids of products that are updating the variants and prices. const variantIdsSelector = transform({ input }, (data) => { if ("products" in data.input) { diff --git a/packages/core/core-flows/src/product/workflows/upsert-variant-prices.ts b/packages/core/core-flows/src/product/workflows/upsert-variant-prices.ts index 7c289a0732..0fd484daca 100644 --- a/packages/core/core-flows/src/product/workflows/upsert-variant-prices.ts +++ b/packages/core/core-flows/src/product/workflows/upsert-variant-prices.ts @@ -13,7 +13,7 @@ import { removeRemoteLinkStep, useRemoteQueryStep } from "../../common" import { createPriceSetsStep, updatePriceSetsStep } from "../../pricing" import { createVariantPricingLinkStep } from "../steps" -type WorkflowInput = { +export type UpsertVariantPricesWorkflowInput = { variantPrices: { variant_id: string product_id: string @@ -23,9 +23,12 @@ type WorkflowInput = { } export const upsertVariantPricesWorkflowId = "upsert-variant-prices" +/** + * This workflow creates or updates variants' prices. + */ export const upsertVariantPricesWorkflow = createWorkflow( upsertVariantPricesWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData): WorkflowData => { const removedVariantIds = transform({ input }, (data) => { return arrayDifference( data.input.previousVariantIds,