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 { ProductOptionWorkflowEvents } from "@medusajs/utils"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
transform,
} from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { createProductOptionsStep } from "../steps"
export type CreateProductOptionsWorkflowInput = {
@@ -24,6 +27,20 @@ export const createProductOptionsWorkflow = createWorkflow(
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, {
hooks: [productOptionsCreated],
})
@@ -1,10 +1,13 @@
import { AdditionalData, ProductTypes } from "@medusajs/types"
import { ProductTagWorkflowEvents } from "@medusajs/utils"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
transform,
} from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { createProductTagsStep } from "../steps"
export type CreateProductTagsWorkflowInput = {
@@ -24,6 +27,17 @@ export const createProductTagsWorkflow = createWorkflow(
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, {
hooks: [productTagsCreated],
})
@@ -1,10 +1,13 @@
import { AdditionalData, ProductTypes } from "@medusajs/types"
import { ProductTypeWorkflowEvents } from "@medusajs/utils"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
transform,
} from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { createProductTypesStep } from "../steps"
export type CreateProductTypesWorkflowInput = {
@@ -24,6 +27,17 @@ export const createProductTypesWorkflow = createWorkflow(
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, {
hooks: [productTypesCreated],
})
@@ -1,9 +1,12 @@
import { ProductOptionWorkflowEvents } from "@medusajs/utils"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
transform,
} from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { deleteProductOptionsStep } from "../steps"
export type DeleteProductOptionsWorkflowInput = { ids: string[] }
@@ -20,6 +23,17 @@ export const deleteProductOptionsWorkflow = createWorkflow(
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, {
hooks: [productOptionsDeleted],
})
@@ -1,9 +1,12 @@
import { ProductTagWorkflowEvents } from "@medusajs/utils"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
transform,
} from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { deleteProductTagsStep } from "../steps"
export type DeleteProductTagsWorkflowInput = { ids: string[] }
@@ -20,6 +23,17 @@ export const deleteProductTagsWorkflow = createWorkflow(
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, {
hooks: [productTagsDeleted],
})
@@ -1,9 +1,12 @@
import { ProductTypeWorkflowEvents } from "@medusajs/utils"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
transform,
} from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { deleteProductTypesStep } from "../steps"
export type DeleteProductTypesWorkflowInput = { ids: string[] }
@@ -20,6 +23,17 @@ export const deleteProductTypesWorkflow = createWorkflow(
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, {
hooks: [productTypesDeleted],
})
@@ -1,10 +1,13 @@
import { AdditionalData, ProductTypes } from "@medusajs/types"
import { ProductOptionWorkflowEvents } from "@medusajs/utils"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
transform,
} from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { updateProductOptionsStep } from "../steps"
export type UpdateProductOptionsWorkflowInput = {
@@ -25,6 +28,24 @@ export const updateProductOptionsWorkflow = createWorkflow(
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, {
hooks: [productOptionsUpdated],
})
@@ -1,10 +1,13 @@
import { AdditionalData, ProductTypes } from "@medusajs/types"
import { ProductTagWorkflowEvents } from "@medusajs/utils"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
transform,
} from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { updateProductTagsStep } from "../steps"
export type UpdateProductTagsWorkflowInput = {
@@ -24,6 +27,25 @@ export const updateProductTagsWorkflow = createWorkflow(
product_tags: updatedProductTags,
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, {
hooks: [productTagsUpdated],
})
@@ -1,10 +1,13 @@
import { AdditionalData, ProductTypes } from "@medusajs/types"
import { ProductTypeWorkflowEvents } from "@medusajs/utils"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
transform,
} from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { updateProductTypesStep } from "../steps"
type UpdateProductTypesWorkflowInput = {
@@ -25,6 +28,24 @@ export const updateProductTypesWorkflow = createWorkflow(
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, {
hooks: [productTypesUpdated],
})
@@ -50,6 +50,24 @@ export const ProductWorkflowEvents = {
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 = {
ACCEPTED: "invite.accepted",
CREATED: "invite.created",