chore(core-flows): [13] export types and steps, add basic TSDocs (#8523)
This commit is contained in:
1 parent
10f72f15b0
commit
f9a8fcc0bc
25 files changed
+128
-68
No files matched your search
@@ -5,6 +5,9 @@ import { batchLinkProductsToCollectionStep } from "../steps/batch-link-products-
|
|||||||
export const batchLinkProductsToCollectionWorkflowId =
|
export const batchLinkProductsToCollectionWorkflowId =
|
||||||
"batch-link-products-to-collection"
|
"batch-link-products-to-collection"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This workflow creates links between product and collection records.
|
||||||
|
*/
|
||||||
export const batchLinkProductsToCollectionWorkflow = createWorkflow(
|
export const batchLinkProductsToCollectionWorkflow = createWorkflow(
|
||||||
batchLinkProductsToCollectionWorkflowId,
|
batchLinkProductsToCollectionWorkflowId,
|
||||||
(input: WorkflowData<LinkWorkflowInput>): WorkflowData<void> => {
|
(input: WorkflowData<LinkWorkflowInput>): WorkflowData<void> => {
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ import { updateProductVariantsWorkflow } from "./update-product-variants"
|
|||||||
import { deleteProductVariantsWorkflow } from "./delete-product-variants"
|
import { deleteProductVariantsWorkflow } from "./delete-product-variants"
|
||||||
|
|
||||||
export const batchProductVariantsWorkflowId = "batch-product-variants"
|
export const batchProductVariantsWorkflowId = "batch-product-variants"
|
||||||
|
/**
|
||||||
|
* This workflow creates, updates, and deletes product variants.
|
||||||
|
*/
|
||||||
export const batchProductVariantsWorkflow = createWorkflow(
|
export const batchProductVariantsWorkflow = createWorkflow(
|
||||||
batchProductVariantsWorkflowId,
|
batchProductVariantsWorkflowId,
|
||||||
(
|
(
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ import { batchLinkProductsToCategoryStep } from "../steps/batch-link-products-in
|
|||||||
|
|
||||||
export const batchLinkProductsToCategoryWorkflowId =
|
export const batchLinkProductsToCategoryWorkflowId =
|
||||||
"batch-link-products-to-category"
|
"batch-link-products-to-category"
|
||||||
|
/**
|
||||||
|
* This workflow creates links between product and category records.
|
||||||
|
*/
|
||||||
export const batchLinkProductsToCategoryWorkflow = createWorkflow(
|
export const batchLinkProductsToCategoryWorkflow = createWorkflow(
|
||||||
batchLinkProductsToCategoryWorkflowId,
|
batchLinkProductsToCategoryWorkflowId,
|
||||||
(
|
(
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ import { deleteProductsWorkflow } from "./delete-products"
|
|||||||
import { updateProductsWorkflow } from "./update-products"
|
import { updateProductsWorkflow } from "./update-products"
|
||||||
|
|
||||||
export const batchProductsWorkflowId = "batch-products"
|
export const batchProductsWorkflowId = "batch-products"
|
||||||
|
/**
|
||||||
|
* This workflow creates, updates, or deletes products.
|
||||||
|
*/
|
||||||
export const batchProductsWorkflow = createWorkflow(
|
export const batchProductsWorkflow = createWorkflow(
|
||||||
batchProductsWorkflowId,
|
batchProductsWorkflowId,
|
||||||
(
|
(
|
||||||
|
|||||||
@@ -7,14 +7,17 @@ import {
|
|||||||
} from "@medusajs/workflows-sdk"
|
} from "@medusajs/workflows-sdk"
|
||||||
import { createCollectionsStep } from "../steps"
|
import { createCollectionsStep } from "../steps"
|
||||||
|
|
||||||
type WorkflowInput = {
|
export type CreateCollectionsWorkflowInput = {
|
||||||
collections: ProductTypes.CreateProductCollectionDTO[]
|
collections: ProductTypes.CreateProductCollectionDTO[]
|
||||||
} & AdditionalData
|
} & AdditionalData
|
||||||
|
|
||||||
export const createCollectionsWorkflowId = "create-collections"
|
export const createCollectionsWorkflowId = "create-collections"
|
||||||
|
/**
|
||||||
|
* This workflow creates one or more collections.
|
||||||
|
*/
|
||||||
export const createCollectionsWorkflow = createWorkflow(
|
export const createCollectionsWorkflow = createWorkflow(
|
||||||
createCollectionsWorkflowId,
|
createCollectionsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<CreateCollectionsWorkflowInput>) => {
|
||||||
const collections = createCollectionsStep(input.collections)
|
const collections = createCollectionsStep(input.collections)
|
||||||
const collectionsCreated = createHook("collectionsCreated", {
|
const collectionsCreated = createHook("collectionsCreated", {
|
||||||
collections,
|
collections,
|
||||||
|
|||||||
@@ -7,15 +7,17 @@ import {
|
|||||||
} from "@medusajs/workflows-sdk"
|
} from "@medusajs/workflows-sdk"
|
||||||
import { createProductOptionsStep } from "../steps"
|
import { createProductOptionsStep } from "../steps"
|
||||||
|
|
||||||
type WorkflowInput = {
|
export type CreateProductOptionsWorkflowInput = {
|
||||||
product_options: ProductTypes.CreateProductOptionDTO[]
|
product_options: ProductTypes.CreateProductOptionDTO[]
|
||||||
} & AdditionalData
|
} & AdditionalData
|
||||||
|
|
||||||
export const createProductOptionsWorkflowId = "create-product-options"
|
export const createProductOptionsWorkflowId = "create-product-options"
|
||||||
|
/**
|
||||||
|
* This workflow creates one or more product options.
|
||||||
|
*/
|
||||||
export const createProductOptionsWorkflow = createWorkflow(
|
export const createProductOptionsWorkflow = createWorkflow(
|
||||||
createProductOptionsWorkflowId,
|
createProductOptionsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<CreateProductOptionsWorkflowInput>) => {
|
||||||
const productOptions = createProductOptionsStep(input.product_options)
|
const productOptions = createProductOptionsStep(input.product_options)
|
||||||
const productOptionsCreated = createHook("productOptionsCreated", {
|
const productOptionsCreated = createHook("productOptionsCreated", {
|
||||||
product_options: productOptions,
|
product_options: productOptions,
|
||||||
|
|||||||
@@ -7,15 +7,17 @@ import {
|
|||||||
} from "@medusajs/workflows-sdk"
|
} from "@medusajs/workflows-sdk"
|
||||||
import { createProductTagsStep } from "../steps"
|
import { createProductTagsStep } from "../steps"
|
||||||
|
|
||||||
type WorkflowInput = {
|
export type CreateProductTagsWorkflowInput = {
|
||||||
product_tags: ProductTypes.CreateProductTagDTO[]
|
product_tags: ProductTypes.CreateProductTagDTO[]
|
||||||
} & AdditionalData
|
} & AdditionalData
|
||||||
|
|
||||||
export const createProductTagsWorkflowId = "create-product-tags"
|
export const createProductTagsWorkflowId = "create-product-tags"
|
||||||
|
/**
|
||||||
|
* This workflow creates one or more product tags.
|
||||||
|
*/
|
||||||
export const createProductTagsWorkflow = createWorkflow(
|
export const createProductTagsWorkflow = createWorkflow(
|
||||||
createProductTagsWorkflowId,
|
createProductTagsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<CreateProductTagsWorkflowInput>) => {
|
||||||
const productTags = createProductTagsStep(input.product_tags)
|
const productTags = createProductTagsStep(input.product_tags)
|
||||||
const productTagsCreated = createHook("productTagsCreated", {
|
const productTagsCreated = createHook("productTagsCreated", {
|
||||||
product_tags: productTags,
|
product_tags: productTags,
|
||||||
|
|||||||
@@ -7,15 +7,17 @@ import {
|
|||||||
} from "@medusajs/workflows-sdk"
|
} from "@medusajs/workflows-sdk"
|
||||||
import { createProductTypesStep } from "../steps"
|
import { createProductTypesStep } from "../steps"
|
||||||
|
|
||||||
type WorkflowInput = {
|
export type CreateProductTypesWorkflowInput = {
|
||||||
product_types: ProductTypes.CreateProductTypeDTO[]
|
product_types: ProductTypes.CreateProductTypeDTO[]
|
||||||
} & AdditionalData
|
} & AdditionalData
|
||||||
|
|
||||||
export const createProductTypesWorkflowId = "create-product-types"
|
export const createProductTypesWorkflowId = "create-product-types"
|
||||||
|
/**
|
||||||
|
* This workflow creates one or more product types.
|
||||||
|
*/
|
||||||
export const createProductTypesWorkflow = createWorkflow(
|
export const createProductTypesWorkflow = createWorkflow(
|
||||||
createProductTypesWorkflowId,
|
createProductTypesWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<CreateProductTypesWorkflowInput>) => {
|
||||||
const productTypes = createProductTypesStep(input.product_types)
|
const productTypes = createProductTypesStep(input.product_types)
|
||||||
const productTypesCreated = createHook("productTypesCreated", {
|
const productTypesCreated = createHook("productTypesCreated", {
|
||||||
product_types: productTypes,
|
product_types: productTypes,
|
||||||
|
|||||||
@@ -20,8 +20,11 @@ import { createProductVariantsStep } from "../steps/create-product-variants"
|
|||||||
import { createVariantPricingLinkStep } from "../steps/create-variant-pricing-link"
|
import { createVariantPricingLinkStep } from "../steps/create-variant-pricing-link"
|
||||||
import { Modules } from "@medusajs/utils"
|
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 & {
|
product_variants: (ProductTypes.CreateProductVariantDTO & {
|
||||||
prices?: PricingTypes.CreateMoneyAmountDTO[]
|
prices?: PricingTypes.CreateMoneyAmountDTO[]
|
||||||
} & {
|
} & {
|
||||||
@@ -49,7 +52,7 @@ const buildLink = (
|
|||||||
const buildLinksToCreate = (data: {
|
const buildLinksToCreate = (data: {
|
||||||
createdVariants: ProductTypes.ProductVariantDTO[]
|
createdVariants: ProductTypes.ProductVariantDTO[]
|
||||||
inventoryIndexMap: Record<number, InventoryTypes.InventoryItemDTO>
|
inventoryIndexMap: Record<number, InventoryTypes.InventoryItemDTO>
|
||||||
input: WorkflowInput
|
input: CreateProductVariantsWorkflowInput
|
||||||
}) => {
|
}) => {
|
||||||
let index = 0
|
let index = 0
|
||||||
const linksToCreate: LinkDefinition[] = []
|
const linksToCreate: LinkDefinition[] = []
|
||||||
@@ -88,7 +91,7 @@ const buildLinksToCreate = (data: {
|
|||||||
|
|
||||||
const buildVariantItemCreateMap = (data: {
|
const buildVariantItemCreateMap = (data: {
|
||||||
createdVariants: ProductTypes.ProductVariantDTO[]
|
createdVariants: ProductTypes.ProductVariantDTO[]
|
||||||
input: WorkflowInput
|
input: CreateProductVariantsWorkflowInput
|
||||||
}) => {
|
}) => {
|
||||||
let index = 0
|
let index = 0
|
||||||
const map: Record<number, InventoryTypes.CreateInventoryItemInput> = {}
|
const map: Record<number, InventoryTypes.CreateInventoryItemInput> = {}
|
||||||
@@ -124,10 +127,12 @@ const buildVariantItemCreateMap = (data: {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const createProductVariantsWorkflowId = "create-product-variants"
|
export const createProductVariantsWorkflowId = "create-product-variants"
|
||||||
|
/**
|
||||||
|
* This workflow creates one or more product variants.
|
||||||
|
*/
|
||||||
export const createProductVariantsWorkflow = createWorkflow(
|
export const createProductVariantsWorkflow = createWorkflow(
|
||||||
createProductVariantsWorkflowId,
|
createProductVariantsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<CreateProductVariantsWorkflowInput>) => {
|
||||||
// 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) => ({
|
||||||
|
|||||||
@@ -16,15 +16,17 @@ import { associateProductsWithSalesChannelsStep } from "../../sales-channel"
|
|||||||
import { createProductsStep } from "../steps/create-products"
|
import { createProductsStep } from "../steps/create-products"
|
||||||
import { createProductVariantsWorkflow } from "./create-product-variants"
|
import { createProductVariantsWorkflow } from "./create-product-variants"
|
||||||
|
|
||||||
type WorkflowInput = {
|
export type CreateProductsWorkflowInput = {
|
||||||
products: CreateProductWorkflowInputDTO[]
|
products: CreateProductWorkflowInputDTO[]
|
||||||
} & AdditionalData
|
} & AdditionalData
|
||||||
|
|
||||||
export const createProductsWorkflowId = "create-products"
|
export const createProductsWorkflowId = "create-products"
|
||||||
|
/**
|
||||||
|
* This workflow creates one or more products.
|
||||||
|
*/
|
||||||
export const createProductsWorkflow = createWorkflow(
|
export const createProductsWorkflow = createWorkflow(
|
||||||
createProductsWorkflowId,
|
createProductsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<CreateProductsWorkflowInput>) => {
|
||||||
// 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) => ({
|
||||||
|
|||||||
@@ -6,13 +6,15 @@ import {
|
|||||||
} from "@medusajs/workflows-sdk"
|
} from "@medusajs/workflows-sdk"
|
||||||
import { deleteCollectionsStep } from "../steps"
|
import { deleteCollectionsStep } from "../steps"
|
||||||
|
|
||||||
type WorkflowInput = { ids: string[] }
|
export type DeleteCollectionsWorkflowInput = { ids: string[] }
|
||||||
|
|
||||||
export const deleteCollectionsWorkflowId = "delete-collections"
|
export const deleteCollectionsWorkflowId = "delete-collections"
|
||||||
|
/**
|
||||||
|
* This workflow deletes one or more collection.
|
||||||
|
*/
|
||||||
export const deleteCollectionsWorkflow = createWorkflow(
|
export const deleteCollectionsWorkflow = createWorkflow(
|
||||||
deleteCollectionsWorkflowId,
|
deleteCollectionsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<DeleteCollectionsWorkflowInput>) => {
|
||||||
const deletedCollections = deleteCollectionsStep(input.ids)
|
const deletedCollections = deleteCollectionsStep(input.ids)
|
||||||
const collectionsDeleted = createHook("collectionsDeleted", {
|
const collectionsDeleted = createHook("collectionsDeleted", {
|
||||||
ids: input.ids,
|
ids: input.ids,
|
||||||
|
|||||||
@@ -6,12 +6,15 @@ import {
|
|||||||
} from "@medusajs/workflows-sdk"
|
} from "@medusajs/workflows-sdk"
|
||||||
import { deleteProductOptionsStep } from "../steps"
|
import { deleteProductOptionsStep } from "../steps"
|
||||||
|
|
||||||
type WorkflowInput = { ids: string[] }
|
export type DeleteProductOptionsWorkflowInput = { ids: string[] }
|
||||||
|
|
||||||
export const deleteProductOptionsWorkflowId = "delete-product-options"
|
export const deleteProductOptionsWorkflowId = "delete-product-options"
|
||||||
|
/**
|
||||||
|
* This workflow deletes one or more product options.
|
||||||
|
*/
|
||||||
export const deleteProductOptionsWorkflow = createWorkflow(
|
export const deleteProductOptionsWorkflow = createWorkflow(
|
||||||
deleteProductOptionsWorkflowId,
|
deleteProductOptionsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<DeleteProductOptionsWorkflowInput>) => {
|
||||||
const deletedProductOptions = deleteProductOptionsStep(input.ids)
|
const deletedProductOptions = deleteProductOptionsStep(input.ids)
|
||||||
const productOptionsDeleted = createHook("productOptionsDeleted", {
|
const productOptionsDeleted = createHook("productOptionsDeleted", {
|
||||||
ids: input.ids,
|
ids: input.ids,
|
||||||
|
|||||||
@@ -6,12 +6,15 @@ import {
|
|||||||
} from "@medusajs/workflows-sdk"
|
} from "@medusajs/workflows-sdk"
|
||||||
import { deleteProductTagsStep } from "../steps"
|
import { deleteProductTagsStep } from "../steps"
|
||||||
|
|
||||||
type WorkflowInput = { ids: string[] }
|
export type DeleteProductTagsWorkflowInput = { ids: string[] }
|
||||||
|
|
||||||
export const deleteProductTagsWorkflowId = "delete-product-tags"
|
export const deleteProductTagsWorkflowId = "delete-product-tags"
|
||||||
|
/**
|
||||||
|
* This workflow deletes one or more product tags.
|
||||||
|
*/
|
||||||
export const deleteProductTagsWorkflow = createWorkflow(
|
export const deleteProductTagsWorkflow = createWorkflow(
|
||||||
deleteProductTagsWorkflowId,
|
deleteProductTagsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<DeleteProductTagsWorkflowInput>) => {
|
||||||
const deletedProductTags = deleteProductTagsStep(input.ids)
|
const deletedProductTags = deleteProductTagsStep(input.ids)
|
||||||
const productTagsDeleted = createHook("productTagsDeleted", {
|
const productTagsDeleted = createHook("productTagsDeleted", {
|
||||||
ids: input.ids,
|
ids: input.ids,
|
||||||
|
|||||||
@@ -6,12 +6,15 @@ import {
|
|||||||
} from "@medusajs/workflows-sdk"
|
} from "@medusajs/workflows-sdk"
|
||||||
import { deleteProductTypesStep } from "../steps"
|
import { deleteProductTypesStep } from "../steps"
|
||||||
|
|
||||||
type WorkflowInput = { ids: string[] }
|
export type DeleteProductTypesWorkflowInput = { ids: string[] }
|
||||||
|
|
||||||
export const deleteProductTypesWorkflowId = "delete-product-types"
|
export const deleteProductTypesWorkflowId = "delete-product-types"
|
||||||
|
/**
|
||||||
|
* This workflow deletes one or more product types.
|
||||||
|
*/
|
||||||
export const deleteProductTypesWorkflow = createWorkflow(
|
export const deleteProductTypesWorkflow = createWorkflow(
|
||||||
deleteProductTypesWorkflowId,
|
deleteProductTypesWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<DeleteProductTypesWorkflowInput>) => {
|
||||||
const deletedProductTypes = deleteProductTypesStep(input.ids)
|
const deletedProductTypes = deleteProductTypesStep(input.ids)
|
||||||
const productTypesDeleted = createHook("productTypesDeleted", {
|
const productTypesDeleted = createHook("productTypesDeleted", {
|
||||||
ids: input.ids,
|
ids: input.ids,
|
||||||
|
|||||||
@@ -8,12 +8,15 @@ import { deleteProductVariantsStep } from "../steps"
|
|||||||
import { removeRemoteLinkStep } from "../../common"
|
import { removeRemoteLinkStep } from "../../common"
|
||||||
import { Modules } from "@medusajs/utils"
|
import { Modules } from "@medusajs/utils"
|
||||||
|
|
||||||
type WorkflowInput = { ids: string[] }
|
export type DeleteProductVariantsWorkflowInput = { ids: string[] }
|
||||||
|
|
||||||
export const deleteProductVariantsWorkflowId = "delete-product-variants"
|
export const deleteProductVariantsWorkflowId = "delete-product-variants"
|
||||||
|
/**
|
||||||
|
* This workflow deletes one or more product variants.
|
||||||
|
*/
|
||||||
export const deleteProductVariantsWorkflow = createWorkflow(
|
export const deleteProductVariantsWorkflow = createWorkflow(
|
||||||
deleteProductVariantsWorkflowId,
|
deleteProductVariantsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<DeleteProductVariantsWorkflowInput>) => {
|
||||||
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" })
|
||||||
|
|||||||
@@ -11,12 +11,15 @@ import { deleteProductsStep } from "../steps/delete-products"
|
|||||||
import { getProductsStep } from "../steps/get-products"
|
import { getProductsStep } from "../steps/get-products"
|
||||||
import { Modules } from "@medusajs/utils"
|
import { Modules } from "@medusajs/utils"
|
||||||
|
|
||||||
type WorkflowInput = { ids: string[] }
|
export type DeleteProductsWorkflowInput = { ids: string[] }
|
||||||
|
|
||||||
export const deleteProductsWorkflowId = "delete-products"
|
export const deleteProductsWorkflowId = "delete-products"
|
||||||
|
/**
|
||||||
|
* This workflow deletes one or more products.
|
||||||
|
*/
|
||||||
export const deleteProductsWorkflow = createWorkflow(
|
export const deleteProductsWorkflow = createWorkflow(
|
||||||
deleteProductsWorkflowId,
|
deleteProductsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<DeleteProductsWorkflowInput>) => {
|
||||||
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
|
||||||
|
|||||||
@@ -9,6 +9,9 @@ import { useRemoteQueryStep } from "../../common"
|
|||||||
import { notifyOnFailureStep, sendNotificationsStep } from "../../notification"
|
import { notifyOnFailureStep, sendNotificationsStep } from "../../notification"
|
||||||
|
|
||||||
export const exportProductsWorkflowId = "export-products"
|
export const exportProductsWorkflowId = "export-products"
|
||||||
|
/**
|
||||||
|
* This workflow exports products matching the specified filters.
|
||||||
|
*/
|
||||||
export const exportProductsWorkflow = createWorkflow(
|
export const exportProductsWorkflow = createWorkflow(
|
||||||
exportProductsWorkflowId,
|
exportProductsWorkflowId,
|
||||||
(
|
(
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ import {
|
|||||||
import { batchProductsWorkflow } from "./batch-products"
|
import { batchProductsWorkflow } from "./batch-products"
|
||||||
|
|
||||||
export const importProductsWorkflowId = "import-products"
|
export const importProductsWorkflowId = "import-products"
|
||||||
|
/**
|
||||||
|
* This workflow imports products from a CSV file.
|
||||||
|
*/
|
||||||
export const importProductsWorkflow = createWorkflow(
|
export const importProductsWorkflow = createWorkflow(
|
||||||
importProductsWorkflowId,
|
importProductsWorkflowId,
|
||||||
(
|
(
|
||||||
|
|||||||
@@ -7,17 +7,18 @@ import {
|
|||||||
} from "@medusajs/workflows-sdk"
|
} from "@medusajs/workflows-sdk"
|
||||||
import { updateCollectionsStep } from "../steps"
|
import { updateCollectionsStep } from "../steps"
|
||||||
|
|
||||||
type UpdateCollectionsStepInput = {
|
export type UpdateCollectionsWorkflowInput = {
|
||||||
selector: ProductTypes.FilterableProductCollectionProps
|
selector: ProductTypes.FilterableProductCollectionProps
|
||||||
update: ProductTypes.UpdateProductCollectionDTO
|
update: ProductTypes.UpdateProductCollectionDTO
|
||||||
} & AdditionalData
|
} & AdditionalData
|
||||||
|
|
||||||
type WorkflowInput = UpdateCollectionsStepInput
|
|
||||||
|
|
||||||
export const updateCollectionsWorkflowId = "update-collections"
|
export const updateCollectionsWorkflowId = "update-collections"
|
||||||
|
/**
|
||||||
|
* This workflow updates collections matching the specified filters.
|
||||||
|
*/
|
||||||
export const updateCollectionsWorkflow = createWorkflow(
|
export const updateCollectionsWorkflow = createWorkflow(
|
||||||
updateCollectionsWorkflowId,
|
updateCollectionsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<UpdateCollectionsWorkflowInput>) => {
|
||||||
const updatedCollections = updateCollectionsStep(input)
|
const updatedCollections = updateCollectionsStep(input)
|
||||||
const collectionsUpdated = createHook("collectionsUpdated", {
|
const collectionsUpdated = createHook("collectionsUpdated", {
|
||||||
additional_data: input.additional_data,
|
additional_data: input.additional_data,
|
||||||
|
|||||||
@@ -7,17 +7,18 @@ import {
|
|||||||
} from "@medusajs/workflows-sdk"
|
} from "@medusajs/workflows-sdk"
|
||||||
import { updateProductOptionsStep } from "../steps"
|
import { updateProductOptionsStep } from "../steps"
|
||||||
|
|
||||||
type UpdateProductOptionsStepInput = {
|
export type UpdateProductOptionsWorkflowInput = {
|
||||||
selector: ProductTypes.FilterableProductOptionProps
|
selector: ProductTypes.FilterableProductOptionProps
|
||||||
update: ProductTypes.UpdateProductOptionDTO
|
update: ProductTypes.UpdateProductOptionDTO
|
||||||
} & AdditionalData
|
} & AdditionalData
|
||||||
|
|
||||||
type WorkflowInput = UpdateProductOptionsStepInput
|
|
||||||
|
|
||||||
export const updateProductOptionsWorkflowId = "update-product-options"
|
export const updateProductOptionsWorkflowId = "update-product-options"
|
||||||
|
/**
|
||||||
|
* This workflow updates product options matching the specified filters.
|
||||||
|
*/
|
||||||
export const updateProductOptionsWorkflow = createWorkflow(
|
export const updateProductOptionsWorkflow = createWorkflow(
|
||||||
updateProductOptionsWorkflowId,
|
updateProductOptionsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<UpdateProductOptionsWorkflowInput>) => {
|
||||||
const updatedProductOptions = updateProductOptionsStep(input)
|
const updatedProductOptions = updateProductOptionsStep(input)
|
||||||
const productOptionsUpdated = createHook("productOptionsUpdated", {
|
const productOptionsUpdated = createHook("productOptionsUpdated", {
|
||||||
product_options: updatedProductOptions,
|
product_options: updatedProductOptions,
|
||||||
|
|||||||
@@ -7,17 +7,18 @@ import {
|
|||||||
} from "@medusajs/workflows-sdk"
|
} from "@medusajs/workflows-sdk"
|
||||||
import { updateProductTagsStep } from "../steps"
|
import { updateProductTagsStep } from "../steps"
|
||||||
|
|
||||||
type UpdateProductTagsStepInput = {
|
export type UpdateProductTagsWorkflowInput = {
|
||||||
selector: ProductTypes.FilterableProductTypeProps
|
selector: ProductTypes.FilterableProductTypeProps
|
||||||
update: ProductTypes.UpdateProductTypeDTO
|
update: ProductTypes.UpdateProductTypeDTO
|
||||||
} & AdditionalData
|
} & AdditionalData
|
||||||
|
|
||||||
type WorkflowInput = UpdateProductTagsStepInput
|
|
||||||
|
|
||||||
export const updateProductTagsWorkflowId = "update-product-tags"
|
export const updateProductTagsWorkflowId = "update-product-tags"
|
||||||
|
/**
|
||||||
|
* This workflow updates product tags matching the specified filters.
|
||||||
|
*/
|
||||||
export const updateProductTagsWorkflow = createWorkflow(
|
export const updateProductTagsWorkflow = createWorkflow(
|
||||||
updateProductTagsWorkflowId,
|
updateProductTagsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<UpdateProductTagsWorkflowInput>) => {
|
||||||
const updatedProductTags = updateProductTagsStep(input)
|
const updatedProductTags = updateProductTagsStep(input)
|
||||||
const productTagsUpdated = createHook("productTagsUpdated", {
|
const productTagsUpdated = createHook("productTagsUpdated", {
|
||||||
product_tags: updatedProductTags,
|
product_tags: updatedProductTags,
|
||||||
|
|||||||
@@ -7,17 +7,18 @@ import {
|
|||||||
} from "@medusajs/workflows-sdk"
|
} from "@medusajs/workflows-sdk"
|
||||||
import { updateProductTypesStep } from "../steps"
|
import { updateProductTypesStep } from "../steps"
|
||||||
|
|
||||||
type UpdateProductTypesStepInput = {
|
type UpdateProductTypesWorkflowInput = {
|
||||||
selector: ProductTypes.FilterableProductTypeProps
|
selector: ProductTypes.FilterableProductTypeProps
|
||||||
update: ProductTypes.UpdateProductTypeDTO
|
update: ProductTypes.UpdateProductTypeDTO
|
||||||
} & AdditionalData
|
} & AdditionalData
|
||||||
|
|
||||||
type WorkflowInput = UpdateProductTypesStepInput
|
|
||||||
|
|
||||||
export const updateProductTypesWorkflowId = "update-product-types"
|
export const updateProductTypesWorkflowId = "update-product-types"
|
||||||
|
/**
|
||||||
|
* This workflow updates product types matching the specified filters.
|
||||||
|
*/
|
||||||
export const updateProductTypesWorkflow = createWorkflow(
|
export const updateProductTypesWorkflow = createWorkflow(
|
||||||
updateProductTypesWorkflowId,
|
updateProductTypesWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<UpdateProductTypesWorkflowInput>) => {
|
||||||
const updatedProductTypes = updateProductTypesStep(input)
|
const updatedProductTypes = updateProductTypesStep(input)
|
||||||
const productTypesUpdated = createHook("productTypesUpdated", {
|
const productTypesUpdated = createHook("productTypesUpdated", {
|
||||||
product_types: updatedProductTypes,
|
product_types: updatedProductTypes,
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { updateProductVariantsStep } from "../steps"
|
|||||||
import { updatePriceSetsStep } from "../../pricing"
|
import { updatePriceSetsStep } from "../../pricing"
|
||||||
import { getVariantPricingLinkStep } from "../steps/get-variant-pricing-link"
|
import { getVariantPricingLinkStep } from "../steps/get-variant-pricing-link"
|
||||||
|
|
||||||
type UpdateProductVariantsStepInput =
|
export type UpdateProductVariantsWorkflowInput =
|
||||||
| {
|
| {
|
||||||
selector: ProductTypes.FilterableProductVariantProps
|
selector: ProductTypes.FilterableProductVariantProps
|
||||||
update: ProductTypes.UpdateProductVariantDTO & {
|
update: ProductTypes.UpdateProductVariantDTO & {
|
||||||
@@ -23,12 +23,13 @@ type UpdateProductVariantsStepInput =
|
|||||||
})[]
|
})[]
|
||||||
}
|
}
|
||||||
|
|
||||||
type WorkflowInput = UpdateProductVariantsStepInput & AdditionalData
|
|
||||||
|
|
||||||
export const updateProductVariantsWorkflowId = "update-product-variants"
|
export const updateProductVariantsWorkflowId = "update-product-variants"
|
||||||
|
/**
|
||||||
|
* This workflow updates one or more product variants.
|
||||||
|
*/
|
||||||
export const updateProductVariantsWorkflow = createWorkflow(
|
export const updateProductVariantsWorkflow = createWorkflow(
|
||||||
updateProductVariantsWorkflowId,
|
updateProductVariantsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<UpdateProductVariantsWorkflowInput & AdditionalData>) => {
|
||||||
// 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) {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import {
|
|||||||
} from "../../common"
|
} from "../../common"
|
||||||
import { upsertVariantPricesWorkflow } from "./upsert-variant-prices"
|
import { upsertVariantPricesWorkflow } from "./upsert-variant-prices"
|
||||||
|
|
||||||
type UpdateProductsStepInputSelector = {
|
export type UpdateProductsWorkflowInputSelector = {
|
||||||
selector: ProductTypes.FilterableProductProps
|
selector: ProductTypes.FilterableProductProps
|
||||||
update: Omit<ProductTypes.UpdateProductDTO, "variants"> & {
|
update: Omit<ProductTypes.UpdateProductDTO, "variants"> & {
|
||||||
sales_channels?: { id: string }[]
|
sales_channels?: { id: string }[]
|
||||||
@@ -29,24 +29,22 @@ type UpdateProductsStepInputSelector = {
|
|||||||
}
|
}
|
||||||
} & AdditionalData
|
} & AdditionalData
|
||||||
|
|
||||||
type UpdateProductsStepInputProducts = {
|
export type UpdateProductsWorkflowInputProducts = {
|
||||||
products: (Omit<ProductTypes.UpsertProductDTO, "variants"> & {
|
products: (Omit<ProductTypes.UpsertProductDTO, "variants"> & {
|
||||||
sales_channels?: { id: string }[]
|
sales_channels?: { id: string }[]
|
||||||
variants?: UpdateProductVariantWorkflowInputDTO[]
|
variants?: UpdateProductVariantWorkflowInputDTO[]
|
||||||
})[]
|
})[]
|
||||||
} & AdditionalData
|
} & AdditionalData
|
||||||
|
|
||||||
type UpdateProductsStepInput =
|
export type UpdateProductWorkflowInput =
|
||||||
| UpdateProductsStepInputSelector
|
| UpdateProductsWorkflowInputSelector
|
||||||
| UpdateProductsStepInputProducts
|
| UpdateProductsWorkflowInputProducts
|
||||||
|
|
||||||
type WorkflowInput = UpdateProductsStepInput
|
|
||||||
|
|
||||||
function prepareUpdateProductInput({
|
function prepareUpdateProductInput({
|
||||||
input,
|
input,
|
||||||
}: {
|
}: {
|
||||||
input: WorkflowInput
|
input: UpdateProductWorkflowInput
|
||||||
}): UpdateProductsStepInput {
|
}): UpdateProductWorkflowInput {
|
||||||
if ("products" in input) {
|
if ("products" in input) {
|
||||||
if (!input.products.length) {
|
if (!input.products.length) {
|
||||||
return { products: [] }
|
return { products: [] }
|
||||||
@@ -82,7 +80,7 @@ function updateProductIds({
|
|||||||
input,
|
input,
|
||||||
}: {
|
}: {
|
||||||
updatedProducts: ProductTypes.ProductDTO[]
|
updatedProducts: ProductTypes.ProductDTO[]
|
||||||
input: WorkflowInput
|
input: UpdateProductWorkflowInput
|
||||||
}) {
|
}) {
|
||||||
let productIds = updatedProducts.map((p) => p.id)
|
let productIds = updatedProducts.map((p) => p.id)
|
||||||
|
|
||||||
@@ -101,7 +99,7 @@ function prepareSalesChannelLinks({
|
|||||||
updatedProducts,
|
updatedProducts,
|
||||||
}: {
|
}: {
|
||||||
updatedProducts: ProductTypes.ProductDTO[]
|
updatedProducts: ProductTypes.ProductDTO[]
|
||||||
input: WorkflowInput
|
input: UpdateProductWorkflowInput
|
||||||
}): Record<string, Record<string, any>>[] {
|
}): Record<string, Record<string, any>>[] {
|
||||||
if ("products" in input) {
|
if ("products" in input) {
|
||||||
if (!input.products.length) {
|
if (!input.products.length) {
|
||||||
@@ -143,7 +141,7 @@ function prepareVariantPrices({
|
|||||||
updatedProducts,
|
updatedProducts,
|
||||||
}: {
|
}: {
|
||||||
updatedProducts: ProductTypes.ProductDTO[]
|
updatedProducts: ProductTypes.ProductDTO[]
|
||||||
input: WorkflowInput
|
input: UpdateProductWorkflowInput
|
||||||
}): {
|
}): {
|
||||||
variant_id: string
|
variant_id: string
|
||||||
product_id: string
|
product_id: string
|
||||||
@@ -209,9 +207,12 @@ function prepareToDeleteSalesChannelLinks({
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const updateProductsWorkflowId = "update-products"
|
export const updateProductsWorkflowId = "update-products"
|
||||||
|
/**
|
||||||
|
* This workflow updates one or more products.
|
||||||
|
*/
|
||||||
export const updateProductsWorkflow = createWorkflow(
|
export const updateProductsWorkflow = createWorkflow(
|
||||||
updateProductsWorkflowId,
|
updateProductsWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>) => {
|
(input: WorkflowData<UpdateProductWorkflowInput>) => {
|
||||||
// We only get the variant ids of products that are updating the variants and prices.
|
// We only get the variant ids of products that are updating the variants and prices.
|
||||||
const variantIdsSelector = transform({ input }, (data) => {
|
const variantIdsSelector = transform({ input }, (data) => {
|
||||||
if ("products" in data.input) {
|
if ("products" in data.input) {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import { removeRemoteLinkStep, useRemoteQueryStep } from "../../common"
|
|||||||
import { createPriceSetsStep, updatePriceSetsStep } from "../../pricing"
|
import { createPriceSetsStep, updatePriceSetsStep } from "../../pricing"
|
||||||
import { createVariantPricingLinkStep } from "../steps"
|
import { createVariantPricingLinkStep } from "../steps"
|
||||||
|
|
||||||
type WorkflowInput = {
|
export type UpsertVariantPricesWorkflowInput = {
|
||||||
variantPrices: {
|
variantPrices: {
|
||||||
variant_id: string
|
variant_id: string
|
||||||
product_id: string
|
product_id: string
|
||||||
@@ -23,9 +23,12 @@ type WorkflowInput = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const upsertVariantPricesWorkflowId = "upsert-variant-prices"
|
export const upsertVariantPricesWorkflowId = "upsert-variant-prices"
|
||||||
|
/**
|
||||||
|
* This workflow creates or updates variants' prices.
|
||||||
|
*/
|
||||||
export const upsertVariantPricesWorkflow = createWorkflow(
|
export const upsertVariantPricesWorkflow = createWorkflow(
|
||||||
upsertVariantPricesWorkflowId,
|
upsertVariantPricesWorkflowId,
|
||||||
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
|
(input: WorkflowData<UpsertVariantPricesWorkflowInput>): WorkflowData<void> => {
|
||||||
const removedVariantIds = transform({ input }, (data) => {
|
const removedVariantIds = transform({ input }, (data) => {
|
||||||
return arrayDifference(
|
return arrayDifference(
|
||||||
data.input.previousVariantIds,
|
data.input.previousVariantIds,
|
||||||
|
|||||||
Reference in new issue
Block a user