feat(core-flows): product type, option and tag events (#9105)

This commit is contained in:
Carlos R. L. Rodrigues
2024-09-11 12:32:01 -03:00
committed by GitHub
parent 5651e890dc
commit 9a7daca21e
10 changed files with 169 additions and 0 deletions
@@ -1,10 +1,13 @@
import { AdditionalData, ProductTypes } from "@medusajs/types" import { AdditionalData, ProductTypes } from "@medusajs/types"
import { ProductOptionWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createHook, createHook,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { createProductOptionsStep } from "../steps" import { createProductOptionsStep } from "../steps"
export type CreateProductOptionsWorkflowInput = { export type CreateProductOptionsWorkflowInput = {
@@ -24,6 +27,20 @@ export const createProductOptionsWorkflow = createWorkflow(
additional_data: input.additional_data, additional_data: input.additional_data,
}) })
const optionIdEvents = transform(
{ productOptions },
({ productOptions }) => {
return productOptions.map((v) => {
return { id: v.id }
})
}
)
emitEventStep({
eventName: ProductOptionWorkflowEvents.CREATED,
data: optionIdEvents,
})
return new WorkflowResponse(productOptions, { return new WorkflowResponse(productOptions, {
hooks: [productOptionsCreated], hooks: [productOptionsCreated],
}) })
@@ -1,10 +1,13 @@
import { AdditionalData, ProductTypes } from "@medusajs/types" import { AdditionalData, ProductTypes } from "@medusajs/types"
import { ProductTagWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createHook, createHook,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { createProductTagsStep } from "../steps" import { createProductTagsStep } from "../steps"
export type CreateProductTagsWorkflowInput = { export type CreateProductTagsWorkflowInput = {
@@ -24,6 +27,17 @@ export const createProductTagsWorkflow = createWorkflow(
additional_data: input.additional_data, additional_data: input.additional_data,
}) })
const tagIdEvents = transform({ productTags }, ({ productTags }) => {
return productTags.map((v) => {
return { id: v.id }
})
})
emitEventStep({
eventName: ProductTagWorkflowEvents.CREATED,
data: tagIdEvents,
})
return new WorkflowResponse(productTags, { return new WorkflowResponse(productTags, {
hooks: [productTagsCreated], hooks: [productTagsCreated],
}) })
@@ -1,10 +1,13 @@
import { AdditionalData, ProductTypes } from "@medusajs/types" import { AdditionalData, ProductTypes } from "@medusajs/types"
import { ProductTypeWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createHook, createHook,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { createProductTypesStep } from "../steps" import { createProductTypesStep } from "../steps"
export type CreateProductTypesWorkflowInput = { export type CreateProductTypesWorkflowInput = {
@@ -24,6 +27,17 @@ export const createProductTypesWorkflow = createWorkflow(
additional_data: input.additional_data, additional_data: input.additional_data,
}) })
const typeIdEvents = transform({ productTypes }, ({ productTypes }) => {
return productTypes.map((v) => {
return { id: v.id }
})
})
emitEventStep({
eventName: ProductTypeWorkflowEvents.CREATED,
data: typeIdEvents,
})
return new WorkflowResponse(productTypes, { return new WorkflowResponse(productTypes, {
hooks: [productTypesCreated], hooks: [productTypesCreated],
}) })
@@ -1,9 +1,12 @@
import { ProductOptionWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createHook, createHook,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { deleteProductOptionsStep } from "../steps" import { deleteProductOptionsStep } from "../steps"
export type DeleteProductOptionsWorkflowInput = { ids: string[] } export type DeleteProductOptionsWorkflowInput = { ids: string[] }
@@ -20,6 +23,17 @@ export const deleteProductOptionsWorkflow = createWorkflow(
ids: input.ids, ids: input.ids,
}) })
const optionIdEvents = transform({ input }, ({ input }) => {
return input.ids?.map((id) => {
return { id }
})
})
emitEventStep({
eventName: ProductOptionWorkflowEvents.DELETED,
data: optionIdEvents,
})
return new WorkflowResponse(deletedProductOptions, { return new WorkflowResponse(deletedProductOptions, {
hooks: [productOptionsDeleted], hooks: [productOptionsDeleted],
}) })
@@ -1,9 +1,12 @@
import { ProductTagWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createHook, createHook,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { deleteProductTagsStep } from "../steps" import { deleteProductTagsStep } from "../steps"
export type DeleteProductTagsWorkflowInput = { ids: string[] } export type DeleteProductTagsWorkflowInput = { ids: string[] }
@@ -20,6 +23,17 @@ export const deleteProductTagsWorkflow = createWorkflow(
ids: input.ids, ids: input.ids,
}) })
const tagIdEvents = transform({ input }, ({ input }) => {
return input.ids?.map((id) => {
return { id }
})
})
emitEventStep({
eventName: ProductTagWorkflowEvents.DELETED,
data: tagIdEvents,
})
return new WorkflowResponse(deletedProductTags, { return new WorkflowResponse(deletedProductTags, {
hooks: [productTagsDeleted], hooks: [productTagsDeleted],
}) })
@@ -1,9 +1,12 @@
import { ProductTypeWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createHook, createHook,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { deleteProductTypesStep } from "../steps" import { deleteProductTypesStep } from "../steps"
export type DeleteProductTypesWorkflowInput = { ids: string[] } export type DeleteProductTypesWorkflowInput = { ids: string[] }
@@ -20,6 +23,17 @@ export const deleteProductTypesWorkflow = createWorkflow(
ids: input.ids, ids: input.ids,
}) })
const typeIdEvents = transform({ input }, ({ input }) => {
return input.ids?.map((id) => {
return { id }
})
})
emitEventStep({
eventName: ProductTypeWorkflowEvents.DELETED,
data: typeIdEvents,
})
return new WorkflowResponse(deletedProductTypes, { return new WorkflowResponse(deletedProductTypes, {
hooks: [productTypesDeleted], hooks: [productTypesDeleted],
}) })
@@ -1,10 +1,13 @@
import { AdditionalData, ProductTypes } from "@medusajs/types" import { AdditionalData, ProductTypes } from "@medusajs/types"
import { ProductOptionWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createHook, createHook,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { updateProductOptionsStep } from "../steps" import { updateProductOptionsStep } from "../steps"
export type UpdateProductOptionsWorkflowInput = { export type UpdateProductOptionsWorkflowInput = {
@@ -25,6 +28,24 @@ export const updateProductOptionsWorkflow = createWorkflow(
additional_data: input.additional_data, additional_data: input.additional_data,
}) })
const optionIdEvents = transform(
{ updatedProductOptions },
({ updatedProductOptions }) => {
const arr = Array.isArray(updatedProductOptions)
? updatedProductOptions
: [updatedProductOptions]
return arr?.map((v) => {
return { id: v.id }
})
}
)
emitEventStep({
eventName: ProductOptionWorkflowEvents.UPDATED,
data: optionIdEvents,
})
return new WorkflowResponse(updatedProductOptions, { return new WorkflowResponse(updatedProductOptions, {
hooks: [productOptionsUpdated], hooks: [productOptionsUpdated],
}) })
@@ -1,10 +1,13 @@
import { AdditionalData, ProductTypes } from "@medusajs/types" import { AdditionalData, ProductTypes } from "@medusajs/types"
import { ProductTagWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createHook, createHook,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { updateProductTagsStep } from "../steps" import { updateProductTagsStep } from "../steps"
export type UpdateProductTagsWorkflowInput = { export type UpdateProductTagsWorkflowInput = {
@@ -24,6 +27,25 @@ export const updateProductTagsWorkflow = createWorkflow(
product_tags: updatedProductTags, product_tags: updatedProductTags,
additional_data: input.additional_data, additional_data: input.additional_data,
}) })
const tagIdEvents = transform(
{ updatedProductTags },
({ updatedProductTags }) => {
const arr = Array.isArray(updatedProductTags)
? updatedProductTags
: [updatedProductTags]
return arr?.map((v) => {
return { id: v.id }
})
}
)
emitEventStep({
eventName: ProductTagWorkflowEvents.UPDATED,
data: tagIdEvents,
})
return new WorkflowResponse(updatedProductTags, { return new WorkflowResponse(updatedProductTags, {
hooks: [productTagsUpdated], hooks: [productTagsUpdated],
}) })
@@ -1,10 +1,13 @@
import { AdditionalData, ProductTypes } from "@medusajs/types" import { AdditionalData, ProductTypes } from "@medusajs/types"
import { ProductTypeWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createHook, createHook,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { updateProductTypesStep } from "../steps" import { updateProductTypesStep } from "../steps"
type UpdateProductTypesWorkflowInput = { type UpdateProductTypesWorkflowInput = {
@@ -25,6 +28,24 @@ export const updateProductTypesWorkflow = createWorkflow(
additional_data: input.additional_data, additional_data: input.additional_data,
}) })
const typeIdEvents = transform(
{ updatedProductTypes },
({ updatedProductTypes }) => {
const arr = Array.isArray(updatedProductTypes)
? updatedProductTypes
: [updatedProductTypes]
return arr?.map((v) => {
return { id: v.id }
})
}
)
emitEventStep({
eventName: ProductTypeWorkflowEvents.UPDATED,
data: typeIdEvents,
})
return new WorkflowResponse(updatedProductTypes, { return new WorkflowResponse(updatedProductTypes, {
hooks: [productTypesUpdated], hooks: [productTypesUpdated],
}) })
@@ -50,6 +50,24 @@ export const ProductWorkflowEvents = {
DELETED: "product.deleted", DELETED: "product.deleted",
} }
export const ProductTypeWorkflowEvents = {
UPDATED: "product-type.updated",
CREATED: "product-type.created",
DELETED: "product-type.deleted",
}
export const ProductTagWorkflowEvents = {
UPDATED: "product-tag.updated",
CREATED: "product-tag.created",
DELETED: "product-tag.deleted",
}
export const ProductOptionWorkflowEvents = {
UPDATED: "product-tag.updated",
CREATED: "product-tag.created",
DELETED: "product-tag.deleted",
}
export const InviteWorkflowEvents = { export const InviteWorkflowEvents = {
ACCEPTED: "invite.accepted", ACCEPTED: "invite.accepted",
CREATED: "invite.created", CREATED: "invite.created",