chore(core-flows): added workflow events (#8915)

* chore(core-flows): added workflow events

* remove from parallelize

* check array
This commit is contained in:
Carlos R. L. Rodrigues authored and GitHub committed 2024-08-30 16:32:08 -03:00
1 parent c8f951dd89
commit 89c6ef8fc9
29 files changed
+387 -80

No files matched your search

@@ -158,6 +158,7 @@ export const completeCartWorkflow = createWorkflow(
({ createdOrders }) => createdOrders[0] ({ createdOrders }) => createdOrders[0]
) )
parallelize(
createRemoteLinkStep([ createRemoteLinkStep([
{ {
[Modules.ORDER]: { order_id: order.id }, [Modules.ORDER]: { order_id: order.id },
@@ -169,12 +170,12 @@ export const completeCartWorkflow = createWorkflow(
payment_collection_id: cart.payment_collection.id, payment_collection_id: cart.payment_collection.id,
}, },
}, },
]) ]),
emitEventStep({ emitEventStep({
eventName: OrderWorkflowEvents.PLACED, eventName: OrderWorkflowEvents.PLACED,
data: { id: order.id }, data: { id: order.id },
}) })
)
return new WorkflowResponse(order) return new WorkflowResponse(order)
} }
@@ -1,13 +1,18 @@
import { CreateCustomerDTO, AdditionalData } from "@medusajs/types" import { AdditionalData, CreateCustomerDTO } from "@medusajs/types"
import { CustomerWorkflowEvents } 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 { createCustomersStep } from "../steps" import { createCustomersStep } from "../steps"
export type CreateCustomersWorkflowInput = { customersData: CreateCustomerDTO[] } & AdditionalData export type CreateCustomersWorkflowInput = {
customersData: CreateCustomerDTO[]
} & AdditionalData
export const createCustomersWorkflowId = "create-customers" export const createCustomersWorkflowId = "create-customers"
/** /**
@@ -22,6 +27,20 @@ export const createCustomersWorkflow = createWorkflow(
additional_data: input.additional_data, additional_data: input.additional_data,
}) })
const customerIdEvents = transform(
{ createdCustomers },
({ createdCustomers }) => {
return createdCustomers.map((v) => {
return { id: v.id }
})
}
)
emitEventStep({
eventName: CustomerWorkflowEvents.CREATED,
data: customerIdEvents,
})
return new WorkflowResponse(createdCustomers, { return new WorkflowResponse(createdCustomers, {
hooks: [customersCreated], hooks: [customersCreated],
}) })
@@ -1,9 +1,12 @@
import { CustomerWorkflowEvents } 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 { deleteCustomersStep } from "../steps" import { deleteCustomersStep } from "../steps"
export type DeleteCustomersWorkflowInput = { ids: string[] } export type DeleteCustomersWorkflowInput = { ids: string[] }
@@ -20,6 +23,17 @@ export const deleteCustomersWorkflow = createWorkflow(
ids: input.ids, ids: input.ids,
}) })
const customerIdEvents = transform({ input }, ({ input }) => {
return input.ids?.map((id) => {
return { id }
})
})
emitEventStep({
eventName: CustomerWorkflowEvents.DELETED,
data: customerIdEvents,
})
return new WorkflowResponse(deletedCustomers, { return new WorkflowResponse(deletedCustomers, {
hooks: [customersDeleted], hooks: [customersDeleted],
}) })
@@ -3,12 +3,15 @@ import {
CustomerUpdatableFields, CustomerUpdatableFields,
FilterableCustomerProps, FilterableCustomerProps,
} from "@medusajs/types" } from "@medusajs/types"
import { CustomerWorkflowEvents } 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 { updateCustomersStep } from "../steps" import { updateCustomersStep } from "../steps"
export type UpdateCustomersWorkflowInput = { export type UpdateCustomersWorkflowInput = {
@@ -29,6 +32,24 @@ export const updateCustomersWorkflow = createWorkflow(
additional_data: input.additional_data, additional_data: input.additional_data,
}) })
const customerIdEvents = transform(
{ updatedCustomers },
({ updatedCustomers }) => {
const arr = Array.isArray(updatedCustomers)
? updatedCustomers
: [updatedCustomers]
return arr?.map((customer) => {
return { id: customer.id }
})
}
)
emitEventStep({
eventName: CustomerWorkflowEvents.UPDATED,
data: customerIdEvents,
})
return new WorkflowResponse(updatedCustomers, { return new WorkflowResponse(updatedCustomers, {
hooks: [customersUpdated], hooks: [customersUpdated],
}) })
@@ -1,14 +1,17 @@
import { InviteWorkflow, UserDTO } from "@medusajs/types" import { InviteWorkflow, UserDTO } from "@medusajs/types"
import { InviteWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createWorkflow, createWorkflow,
parallelize,
transform, transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { createUsersStep } from "../../user" import { setAuthAppMetadataStep } from "../../auth"
import { emitEventStep } from "../../common/steps/emit-event"
import { createUsersWorkflow } from "../../user"
import { deleteInvitesStep } from "../steps" import { deleteInvitesStep } from "../steps"
import { validateTokenStep } from "../steps/validate-token" import { validateTokenStep } from "../steps/validate-token"
import { setAuthAppMetadataStep } from "../../auth"
export const acceptInviteWorkflowId = "accept-invite-workflow" export const acceptInviteWorkflowId = "accept-invite-workflow"
/** /**
@@ -33,7 +36,11 @@ export const acceptInviteWorkflow = createWorkflow(
} }
) )
const users = createUsersStep(createUserInput) const users = createUsersWorkflow.runAsStep({
input: {
users: createUserInput,
},
})
const authUserInput = transform({ input, users }, ({ input, users }) => { const authUserInput = transform({ input, users }, ({ input, users }) => {
const createdUser = users[0] const createdUser = users[0]
@@ -45,8 +52,14 @@ export const acceptInviteWorkflow = createWorkflow(
} }
}) })
setAuthAppMetadataStep(authUserInput) parallelize(
deleteInvitesStep([invite.id]) setAuthAppMetadataStep(authUserInput),
deleteInvitesStep([invite.id]),
emitEventStep({
eventName: InviteWorkflowEvents.ACCEPTED,
data: { id: invite.id },
})
)
return new WorkflowResponse(users) return new WorkflowResponse(users)
} }
@@ -1,11 +1,13 @@
import { InviteDTO, InviteWorkflow } from "@medusajs/types"
import { InviteWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { createInviteStep } from "../steps" import { createInviteStep } from "../steps"
import { InviteDTO, InviteWorkflow } from "@medusajs/types"
export const createInvitesWorkflowId = "create-invite-step" export const createInvitesWorkflowId = "create-invite-step"
/** /**
* This workflow creates one or more invites. * This workflow creates one or more invites.
@@ -15,6 +17,22 @@ export const createInvitesWorkflow = createWorkflow(
( (
input: WorkflowData<InviteWorkflow.CreateInvitesWorkflowInputDTO> input: WorkflowData<InviteWorkflow.CreateInvitesWorkflowInputDTO>
): WorkflowResponse<InviteDTO[]> => { ): WorkflowResponse<InviteDTO[]> => {
return new WorkflowResponse(createInviteStep(input.invites)) const createdInvites = createInviteStep(input.invites)
const invitesIdEvents = transform(
{ createdInvites },
({ createdInvites }) => {
return createdInvites.map((v) => {
return { id: v.id }
})
}
)
emitEventStep({
eventName: InviteWorkflowEvents.CREATED,
data: invitesIdEvents,
})
return new WorkflowResponse(createdInvites)
} }
) )
@@ -1,6 +1,12 @@
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" import { InviteWorkflow } from "@medusajs/types"
import { InviteWorkflowEvents } from "@medusajs/utils"
import {
WorkflowData,
createWorkflow,
transform,
} from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { deleteInvitesStep } from "../steps" import { deleteInvitesStep } from "../steps"
import { InviteWorkflow, UserWorkflow } from "@medusajs/types"
export const deleteInvitesWorkflowId = "delete-invites-workflow" export const deleteInvitesWorkflowId = "delete-invites-workflow"
/** /**
@@ -11,6 +17,17 @@ export const deleteInvitesWorkflow = createWorkflow(
( (
input: WorkflowData<InviteWorkflow.DeleteInvitesWorkflowInput> input: WorkflowData<InviteWorkflow.DeleteInvitesWorkflowInput>
): WorkflowData<void> => { ): WorkflowData<void> => {
return deleteInvitesStep(input.ids) deleteInvitesStep(input.ids)
const invitesIdEvents = transform({ input }, ({ input }) => {
return input.ids?.map((id) => {
return { id }
})
})
emitEventStep({
eventName: InviteWorkflowEvents.DELETED,
data: invitesIdEvents,
})
} }
) )
@@ -23,7 +23,11 @@ export const updateProductCategoriesWorkflow = createWorkflow(
const productCategoryIdEvents = transform( const productCategoryIdEvents = transform(
{ updatedCategories }, { updatedCategories },
({ updatedCategories }) => { ({ updatedCategories }) => {
return updatedCategories.map((v) => { const arr = Array.isArray(updatedCategories)
? updatedCategories
: [updatedCategories]
return arr?.map((v) => {
return { id: v.id } return { id: v.id }
}) })
} }
@@ -27,7 +27,11 @@ export const updateCollectionsWorkflow = createWorkflow(
const collectionIdEvents = transform( const collectionIdEvents = transform(
{ updatedCollections }, { updatedCollections },
({ updatedCollections }) => { ({ updatedCollections }) => {
return updatedCollections.map((v) => { const arr = Array.isArray(updatedCollections)
? updatedCollections
: [updatedCollections]
return arr?.map((v) => {
return { id: v.id } return { id: v.id }
}) })
} }
@@ -139,7 +139,7 @@ export const updateProductVariantsWorkflow = createWorkflow(
) )
const variantIdEvents = transform({ response }, ({ response }) => { const variantIdEvents = transform({ response }, ({ response }) => {
return response.map((v) => { return response?.map((v) => {
return { id: v.id } return { id: v.id }
}) })
}) })
@@ -16,6 +16,7 @@ import {
WorkflowResponse, WorkflowResponse,
createHook, createHook,
createWorkflow, createWorkflow,
parallelize,
transform, transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { import {
@@ -282,21 +283,23 @@ export const updateProductsWorkflow = createWorkflow(
}) })
dismissRemoteLinkStep(toDeleteSalesChannelLinks) dismissRemoteLinkStep(toDeleteSalesChannelLinks)
createRemoteLinkStep(salesChannelLinks)
const productIdEvents = transform( const productIdEvents = transform(
{ updatedProductIds }, { updatedProductIds },
({ updatedProductIds }) => { ({ updatedProductIds }) => {
return updatedProductIds.map((id) => { return updatedProductIds?.map((id) => {
return { id } return { id }
}) })
} }
) )
parallelize(
createRemoteLinkStep(salesChannelLinks),
emitEventStep({ emitEventStep({
eventName: ProductWorkflowEvents.UPDATED, eventName: ProductWorkflowEvents.UPDATED,
data: productIdEvents, data: productIdEvents,
}) })
)
const productsUpdated = createHook("productsUpdated", { const productsUpdated = createHook("productsUpdated", {
products: updatedProducts, products: updatedProducts,
@@ -1,14 +1,16 @@
import { CreateRegionDTO, WorkflowTypes } from "@medusajs/types" import { WorkflowTypes } from "@medusajs/types"
import { RegionWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData,
WorkflowResponse,
createWorkflow, createWorkflow,
parallelize, parallelize,
transform, transform,
WorkflowData,
WorkflowResponse,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { createPricePreferencesWorkflow } from "../../pricing"
import { createRegionsStep } from "../steps" import { createRegionsStep } from "../steps"
import { setRegionsPaymentProvidersStep } from "../steps/set-regions-payment-providers" import { setRegionsPaymentProvidersStep } from "../steps/set-regions-payment-providers"
import { createPricePreferencesWorkflow } from "../../pricing"
export const createRegionsWorkflowId = "create-regions" export const createRegionsWorkflowId = "create-regions"
/** /**
@@ -76,12 +78,22 @@ export const createRegionsWorkflow = createWorkflow(
} }
) )
const regionsIdEvents = transform({ regions }, ({ regions }) => {
return regions.map((v) => {
return { id: v.id }
})
})
parallelize( parallelize(
setRegionsPaymentProvidersStep({ setRegionsPaymentProvidersStep({
input: normalizedRegionProviderData, input: normalizedRegionProviderData,
}), }),
createPricePreferencesWorkflow.runAsStep({ createPricePreferencesWorkflow.runAsStep({
input: normalizedRegionPricePreferencesData, input: normalizedRegionPricePreferencesData,
}),
emitEventStep({
eventName: RegionWorkflowEvents.CREATED,
data: regionsIdEvents,
}) })
) )
@@ -1,4 +1,10 @@
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" import { RegionWorkflowEvents } from "@medusajs/utils"
import {
WorkflowData,
createWorkflow,
transform,
} from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { deleteRegionsStep } from "../steps" import { deleteRegionsStep } from "../steps"
export type DeleteRegionsWorkflowInput = { ids: string[] } export type DeleteRegionsWorkflowInput = { ids: string[] }
@@ -10,6 +16,17 @@ export const deleteRegionsWorkflowId = "delete-regions"
export const deleteRegionsWorkflow = createWorkflow( export const deleteRegionsWorkflow = createWorkflow(
deleteRegionsWorkflowId, deleteRegionsWorkflowId,
(input: WorkflowData<DeleteRegionsWorkflowInput>): WorkflowData<void> => { (input: WorkflowData<DeleteRegionsWorkflowInput>): WorkflowData<void> => {
return deleteRegionsStep(input.ids) deleteRegionsStep(input.ids)
const regionIdEvents = transform({ input }, ({ input }) => {
return input.ids?.map((id) => {
return { id }
})
})
emitEventStep({
eventName: RegionWorkflowEvents.DELETED,
data: regionIdEvents,
})
} }
) )
@@ -1,4 +1,5 @@
import { WorkflowTypes } from "@medusajs/types" import { WorkflowTypes } from "@medusajs/types"
import { RegionWorkflowEvents } from "@medusajs/utils"
import { import {
createWorkflow, createWorkflow,
parallelize, parallelize,
@@ -7,9 +8,10 @@ import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { updatePricePreferencesWorkflow } from "../../pricing"
import { updateRegionsStep } from "../steps" import { updateRegionsStep } from "../steps"
import { setRegionsPaymentProvidersStep } from "../steps/set-regions-payment-providers" import { setRegionsPaymentProvidersStep } from "../steps/set-regions-payment-providers"
import { updatePricePreferencesWorkflow } from "../../pricing"
export const updateRegionsWorkflowId = "update-regions" export const updateRegionsWorkflowId = "update-regions"
/** /**
@@ -72,9 +74,21 @@ export const updateRegionsWorkflow = createWorkflow(
}) })
}) })
const regionIdEvents = transform({ regions }, ({ regions }) => {
return regions?.map((region) => {
return { id: region.id }
})
})
parallelize(
setRegionsPaymentProvidersStep({ setRegionsPaymentProvidersStep({
input: upsertProvidersNormalizedInput, input: upsertProvidersNormalizedInput,
}),
emitEventStep({
eventName: RegionWorkflowEvents.UPDATED,
data: regionIdEvents,
}) })
)
return new WorkflowResponse(regions) return new WorkflowResponse(regions)
} }
@@ -1,12 +1,17 @@
import { CreateSalesChannelDTO, SalesChannelDTO } from "@medusajs/types" import { CreateSalesChannelDTO, SalesChannelDTO } from "@medusajs/types"
import { SalesChannelWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { createSalesChannelsStep } from "../steps/create-sales-channels" import { createSalesChannelsStep } from "../steps/create-sales-channels"
export type CreateSalesChannelsWorkflowInput = { salesChannelsData: CreateSalesChannelDTO[] } export type CreateSalesChannelsWorkflowInput = {
salesChannelsData: CreateSalesChannelDTO[]
}
export const createSalesChannelsWorkflowId = "create-sales-channels" export const createSalesChannelsWorkflowId = "create-sales-channels"
/** /**
@@ -14,9 +19,27 @@ export const createSalesChannelsWorkflowId = "create-sales-channels"
*/ */
export const createSalesChannelsWorkflow = createWorkflow( export const createSalesChannelsWorkflow = createWorkflow(
createSalesChannelsWorkflowId, createSalesChannelsWorkflowId,
(input: WorkflowData<CreateSalesChannelsWorkflowInput>): WorkflowResponse<SalesChannelDTO[]> => { (
return new WorkflowResponse( input: WorkflowData<CreateSalesChannelsWorkflowInput>
createSalesChannelsStep({ data: input.salesChannelsData }) ): WorkflowResponse<SalesChannelDTO[]> => {
const createdSalesChannels = createSalesChannelsStep({
data: input.salesChannelsData,
})
const salesChannelsIdEvents = transform(
{ createdSalesChannels },
({ createdSalesChannels }) => {
return createdSalesChannels.map((v) => {
return { id: v.id }
})
}
) )
emitEventStep({
eventName: SalesChannelWorkflowEvents.CREATED,
data: salesChannelsIdEvents,
})
return new WorkflowResponse(createdSalesChannels)
} }
) )
@@ -1,8 +1,12 @@
import { createWorkflow, WorkflowData } from "@medusajs/workflows-sdk" import { Modules, UserWorkflowEvents } from "@medusajs/utils"
import {
import { deleteSalesChannelsStep } from "../steps/delete-sales-channels" createWorkflow,
transform,
WorkflowData,
} from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common"
import { removeRemoteLinkStep } from "../../common/steps/remove-remote-links" import { removeRemoteLinkStep } from "../../common/steps/remove-remote-links"
import { Modules } from "@medusajs/utils" import { deleteSalesChannelsStep } from "../steps/delete-sales-channels"
export type DeleteSalesChannelsWorkflowInput = { ids: string[] } export type DeleteSalesChannelsWorkflowInput = { ids: string[] }
@@ -12,11 +16,24 @@ export const deleteSalesChannelsWorkflowId = "delete-sales-channels"
*/ */
export const deleteSalesChannelsWorkflow = createWorkflow( export const deleteSalesChannelsWorkflow = createWorkflow(
deleteSalesChannelsWorkflowId, deleteSalesChannelsWorkflowId,
(input: WorkflowData<DeleteSalesChannelsWorkflowInput>): WorkflowData<void> => { (
input: WorkflowData<DeleteSalesChannelsWorkflowInput>
): WorkflowData<void> => {
deleteSalesChannelsStep(input.ids) deleteSalesChannelsStep(input.ids)
removeRemoteLinkStep({ removeRemoteLinkStep({
[Modules.SALES_CHANNEL]: { sales_channel_id: input.ids }, [Modules.SALES_CHANNEL]: { sales_channel_id: input.ids },
}) })
const salesChannelsIdEvents = transform({ input }, ({ input }) => {
return input.ids?.map((id) => {
return { id }
})
})
emitEventStep({
eventName: UserWorkflowEvents.DELETED,
data: salesChannelsIdEvents,
})
} }
) )
@@ -3,11 +3,14 @@ import {
SalesChannelDTO, SalesChannelDTO,
UpdateSalesChannelDTO, UpdateSalesChannelDTO,
} from "@medusajs/types" } from "@medusajs/types"
import { SalesChannelWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common"
import { updateSalesChannelsStep } from "../steps/update-sales-channels" import { updateSalesChannelsStep } from "../steps/update-sales-channels"
export type UpdateSalesChannelsWorkflowInput = { export type UpdateSalesChannelsWorkflowInput = {
@@ -24,6 +27,25 @@ export const updateSalesChannelsWorkflow = createWorkflow(
( (
input: WorkflowData<UpdateSalesChannelsWorkflowInput> input: WorkflowData<UpdateSalesChannelsWorkflowInput>
): WorkflowResponse<SalesChannelDTO[]> => { ): WorkflowResponse<SalesChannelDTO[]> => {
return new WorkflowResponse(updateSalesChannelsStep(input)) const updatedSalesChannels = updateSalesChannelsStep(input)
const salesChannelIdEvents = transform(
{ updatedSalesChannels },
({ updatedSalesChannels }) => {
const arr = Array.isArray(updatedSalesChannels)
? updatedSalesChannels
: [updatedSalesChannels]
return arr?.map((salesChannel) => {
return { id: salesChannel.id }
})
}
)
emitEventStep({
eventName: SalesChannelWorkflowEvents.UPDATED,
data: salesChannelIdEvents,
})
return new WorkflowResponse(updatedSalesChannels)
} }
) )
@@ -5,8 +5,8 @@ import {
createWorkflow, createWorkflow,
transform, transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { createUsersStep } from "../steps"
import { setAuthAppMetadataStep } from "../../auth" import { setAuthAppMetadataStep } from "../../auth"
import { createUsersWorkflow } from "./create-users"
export type CreateUserAccountWorkflowInput = { export type CreateUserAccountWorkflowInput = {
authIdentityId: string authIdentityId: string
@@ -19,8 +19,15 @@ export const createUserAccountWorkflowId = "create-user-account"
*/ */
export const createUserAccountWorkflow = createWorkflow( export const createUserAccountWorkflow = createWorkflow(
createUserAccountWorkflowId, createUserAccountWorkflowId,
(input: WorkflowData<CreateUserAccountWorkflowInput>): WorkflowResponse<UserDTO> => { (
const users = createUsersStep([input.userData]) input: WorkflowData<CreateUserAccountWorkflowInput>
): WorkflowResponse<UserDTO> => {
const users = createUsersWorkflow.runAsStep({
input: {
users: [input.userData],
},
})
const user = transform(users, (users: UserDTO[]) => users[0]) const user = transform(users, (users: UserDTO[]) => users[0])
setAuthAppMetadataStep({ setAuthAppMetadataStep({
@@ -1,11 +1,13 @@
import { CreateUserDTO, UserDTO } from "@medusajs/types" import { UserDTO, UserWorkflow } from "@medusajs/types"
import { UserWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { createUsersStep } from "../steps" import { createUsersStep } from "../steps"
import { UserWorkflow } from "@medusajs/types"
export const createUsersWorkflowId = "create-users-workflow" export const createUsersWorkflowId = "create-users-workflow"
/** /**
@@ -16,6 +18,19 @@ export const createUsersWorkflow = createWorkflow(
( (
input: WorkflowData<UserWorkflow.CreateUsersWorkflowInputDTO> input: WorkflowData<UserWorkflow.CreateUsersWorkflowInputDTO>
): WorkflowResponse<UserDTO[]> => { ): WorkflowResponse<UserDTO[]> => {
return new WorkflowResponse(createUsersStep(input.users)) const createdUsers = createUsersStep(input.users)
const userIdEvents = transform({ createdUsers }, ({ createdUsers }) => {
return createdUsers.map((v) => {
return { id: v.id }
})
})
emitEventStep({
eventName: UserWorkflowEvents.CREATED,
data: userIdEvents,
})
return new WorkflowResponse(createdUsers)
} }
) )
@@ -1,6 +1,12 @@
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { deleteUsersStep } from "../steps"
import { UserWorkflow } from "@medusajs/types" import { UserWorkflow } from "@medusajs/types"
import { UserWorkflowEvents } from "@medusajs/utils"
import {
WorkflowData,
createWorkflow,
transform,
} from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common"
import { deleteUsersStep } from "../steps"
export const deleteUsersWorkflowId = "delete-user" export const deleteUsersWorkflowId = "delete-user"
/** /**
@@ -11,6 +17,17 @@ export const deleteUsersWorkflow = createWorkflow(
( (
input: WorkflowData<UserWorkflow.DeleteUserWorkflowInput> input: WorkflowData<UserWorkflow.DeleteUserWorkflowInput>
): WorkflowData<void> => { ): WorkflowData<void> => {
return deleteUsersStep(input.ids) deleteUsersStep(input.ids)
const userIdEvents = transform({ input }, ({ input }) => {
return input.ids?.map((id) => {
return { id }
})
})
emitEventStep({
eventName: UserWorkflowEvents.DELETED,
data: userIdEvents,
})
} }
) )
@@ -1,11 +1,13 @@
import { UserDTO } from "@medusajs/types" import { UserDTO, UserWorkflow } from "@medusajs/types"
import { UserWorkflowEvents } from "@medusajs/utils"
import { import {
WorkflowData, WorkflowData,
WorkflowResponse, WorkflowResponse,
createWorkflow, createWorkflow,
transform,
} from "@medusajs/workflows-sdk" } from "@medusajs/workflows-sdk"
import { emitEventStep } from "../../common/steps/emit-event"
import { updateUsersStep } from "../steps" import { updateUsersStep } from "../steps"
import { UserWorkflow } from "@medusajs/types"
export const updateUsersWorkflowId = "update-users-workflow" export const updateUsersWorkflowId = "update-users-workflow"
/** /**
@@ -16,6 +18,21 @@ export const updateUsersWorkflow = createWorkflow(
( (
input: WorkflowData<UserWorkflow.UpdateUsersWorkflowInputDTO> input: WorkflowData<UserWorkflow.UpdateUsersWorkflowInputDTO>
): WorkflowResponse<UserDTO[]> => { ): WorkflowResponse<UserDTO[]> => {
return new WorkflowResponse(updateUsersStep(input.updates)) const updatedUsers = updateUsersStep(input.updates)
const userIdEvents = transform({ updatedUsers }, ({ updatedUsers }) => {
const arr = Array.isArray(updatedUsers) ? updatedUsers : [updatedUsers]
return arr?.map((user) => {
return { id: user.id }
})
})
emitEventStep({
eventName: UserWorkflowEvents.UPDATED,
data: userIdEvents,
})
return new WorkflowResponse(updatedUsers)
} }
) )
+1
View File
@@ -1,4 +1,5 @@
export * as ApiKeyUtils from "./api-key" export * as ApiKeyUtils from "./api-key"
export * as CoreFlowsUitls from "./core-flows"
export * as DALUtils from "./dal" export * as DALUtils from "./dal"
export * as DecoratorUtils from "./decorators" export * as DecoratorUtils from "./decorators"
export * as DefaultsUtils from "./defaults" export * as DefaultsUtils from "./defaults"
@@ -0,0 +1,53 @@
export const CustomerWorkflowEvents = {
CREATED: "customer.created",
UPDATED: "customer.updated",
DELETED: "customer.deleted",
}
export const OrderWorkflowEvents = {
PLACED: "order.placed",
CANCELED: "order.canceled",
COMPLETED: "order.completed",
}
export const SalesChannelWorkflowEvents = {
CREATED: "sales-channel.created",
UPDATED: "sales-channel.updated",
DELETED: "sales-channel.deleted",
}
export const ProductCategoryWorkflowEvents = {
CREATED: "product-category.created",
UPDATED: "product-category.updated",
DELETED: "product-category.deleted",
}
export const ProductCollectionWorkflowEvents = {
CREATED: "product-collection.created",
UPDATED: "product-collection.updated",
DELETED: "product-collection.deleted",
}
export const ProductVariantWorkflowEvents = {
UPDATED: "product-variant.updated",
CREATED: "product-variant.created",
DELETED: "product-variant.deleted",
}
export const ProductWorkflowEvents = {
UPDATED: "product.updated",
CREATED: "product.created",
DELETED: "product.deleted",
}
export const InviteWorkflowEvents = {
ACCEPTED: "invite.accepted",
CREATED: "invite.created",
DELETED: "invite.deleted",
}
export const RegionWorkflowEvents = {
UPDATED: "region.updated",
CREATED: "region.created",
DELETED: "region.deleted",
}
@@ -0,0 +1 @@
export * from "./events"
+2 -1
View File
@@ -2,6 +2,7 @@ export * from "./api-key"
export * from "./auth" export * from "./auth"
export * from "./bundles" export * from "./bundles"
export * from "./common" export * from "./common"
export * from "./core-flows"
export * from "./dal" export * from "./dal"
export * from "./decorators" export * from "./decorators"
export * from "./defaults" export * from "./defaults"
@@ -18,6 +19,7 @@ export * from "./notification"
export * from "./orchestration" export * from "./orchestration"
export * from "./order" export * from "./order"
export * from "./payment" export * from "./payment"
export * from "./pg"
export * from "./pricing" export * from "./pricing"
export * from "./product" export * from "./product"
export * from "./promotion" export * from "./promotion"
@@ -26,6 +28,5 @@ export * from "./shipping"
export * from "./totals" export * from "./totals"
export * from "./totals/big-number" export * from "./totals/big-number"
export * from "./user" export * from "./user"
export * from "./pg"
export const MedusaModuleType = Symbol.for("MedusaModule") export const MedusaModuleType = Symbol.for("MedusaModule")
-5
View File
@@ -1,5 +0,0 @@
export const OrderWorkflowEvents = {
PLACED: "order.placed",
CANCELED: "order.canceled",
COMPLETED: "order.completed",
}
-1
View File
@@ -1,4 +1,3 @@
export * from "./events"
export * from "./order-change" export * from "./order-change"
export * from "./order-change-action" export * from "./order-change-action"
export * from "./status" export * from "./status"
-24
View File
@@ -21,27 +21,3 @@ export const ProductEvents = buildEventNamesFromEntityName(
eventBaseNames, eventBaseNames,
Modules.PRODUCT Modules.PRODUCT
) )
export const ProductCategoryWorkflowEvents = {
CREATED: "product-category.created",
UPDATED: "product-category.updated",
DELETED: "product-category.deleted",
}
export const ProductCollectionWorkflowEvents = {
CREATED: "product-collection.created",
UPDATED: "product-collection.updated",
DELETED: "product-collection.deleted",
}
export const ProductVariantWorkflowEvents = {
UPDATED: "product-variant.updated",
CREATED: "product-variant.created",
DELETED: "product-variant.deleted",
}
export const ProductWorkflowEvents = {
UPDATED: "product.updated",
CREATED: "product.created",
DELETED: "product.deleted",
}
+6
View File
@@ -7,3 +7,9 @@ export const UserEvents = {
...buildEventNamesFromEntityName(eventBaseNames, Modules.USER), ...buildEventNamesFromEntityName(eventBaseNames, Modules.USER),
INVITE_TOKEN_GENERATED: `${Modules.USER}.user.invite.token_generated`, INVITE_TOKEN_GENERATED: `${Modules.USER}.user.invite.token_generated`,
} }
export const UserWorkflowEvents = {
CREATED: "user.created",
UPDATED: "user.updated",
DELETED: "user.deleted",
}