feature: add hooks to customers modules workflows (#8442)

This commit is contained in:
Harminder Virk
2024-08-05 15:16:32 +05:30
committed by GitHub
parent e7965db071
commit 0dab340013
11 changed files with 159 additions and 45 deletions
@@ -1,7 +1,8 @@
import { CreateCustomerAddressDTO, CustomerAddressDTO } from "@medusajs/types"
import { AdditionalData, CreateCustomerAddressDTO } from "@medusajs/types"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
parallelize,
transform,
@@ -12,14 +13,12 @@ import {
maybeUnsetDefaultShippingAddressesStep,
} from "../steps"
type WorkflowInput = { addresses: CreateCustomerAddressDTO[] }
type WorkflowInput = { addresses: CreateCustomerAddressDTO[] } & AdditionalData
export const createCustomerAddressesWorkflowId = "create-customer-addresses"
export const createCustomerAddressesWorkflow = createWorkflow(
createCustomerAddressesWorkflowId,
(
input: WorkflowData<WorkflowInput>
): WorkflowResponse<CustomerAddressDTO[]> => {
(input: WorkflowData<WorkflowInput>) => {
const unsetInput = transform(input, (data) => ({
create: data.addresses,
}))
@@ -29,6 +28,14 @@ export const createCustomerAddressesWorkflow = createWorkflow(
maybeUnsetDefaultBillingAddressesStep(unsetInput)
)
return new WorkflowResponse(createCustomerAddressesStep(input.addresses))
const createdAddresses = createCustomerAddressesStep(input.addresses)
const addressesCreated = createHook("addressesCreated", {
addresses: createdAddresses,
additional_data: input.additional_data,
})
return new WorkflowResponse(createdAddresses, {
hooks: [addressesCreated],
})
}
)
@@ -1,17 +1,27 @@
import { CustomerDTO, CreateCustomerDTO } from "@medusajs/types"
import { CreateCustomerDTO, AdditionalData } from "@medusajs/types"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
} from "@medusajs/workflows-sdk"
import { createCustomersStep } from "../steps"
type WorkflowInput = { customersData: CreateCustomerDTO[] }
type WorkflowInput = { customersData: CreateCustomerDTO[] } & AdditionalData
export const createCustomersWorkflowId = "create-customers"
export const createCustomersWorkflow = createWorkflow(
createCustomersWorkflowId,
(input: WorkflowData<WorkflowInput>): WorkflowResponse<CustomerDTO[]> => {
return new WorkflowResponse(createCustomersStep(input.customersData))
(input: WorkflowData<WorkflowInput>) => {
const createdCustomers = createCustomersStep(input.customersData)
const customersCreated = createHook("customersCreated", {
customers: createdCustomers,
additional_data: input.additional_data,
})
return new WorkflowResponse(createdCustomers, {
hooks: [customersCreated],
})
}
)
@@ -1,4 +1,9 @@
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
} from "@medusajs/workflows-sdk"
import { deleteCustomerAddressesStep } from "../steps"
type WorkflowInput = { ids: string[] }
@@ -6,7 +11,14 @@ type WorkflowInput = { ids: string[] }
export const deleteCustomerAddressesWorkflowId = "delete-customer-addresses"
export const deleteCustomerAddressesWorkflow = createWorkflow(
deleteCustomerAddressesWorkflowId,
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
return deleteCustomerAddressesStep(input.ids)
(input: WorkflowData<WorkflowInput>) => {
const deletedAddresses = deleteCustomerAddressesStep(input.ids)
const addressesDeleted = createHook("addressesDeleted", {
ids: input.ids,
})
return new WorkflowResponse(deletedAddresses, {
hooks: [addressesDeleted],
})
}
)
@@ -1,4 +1,9 @@
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
} from "@medusajs/workflows-sdk"
import { deleteCustomersStep } from "../steps"
type WorkflowInput = { ids: string[] }
@@ -6,7 +11,14 @@ type WorkflowInput = { ids: string[] }
export const deleteCustomersWorkflowId = "delete-customers"
export const deleteCustomersWorkflow = createWorkflow(
deleteCustomersWorkflowId,
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
return deleteCustomersStep(input.ids)
(input: WorkflowData<WorkflowInput>) => {
const deletedCustomers = deleteCustomersStep(input.ids)
const customersDeleted = createHook("customersDeleted", {
ids: input.ids,
})
return new WorkflowResponse(deletedCustomers, {
hooks: [customersDeleted],
})
}
)
@@ -1,11 +1,12 @@
import {
FilterableCustomerAddressProps,
CustomerAddressDTO,
UpdateCustomerAddressDTO,
AdditionalData,
} from "@medusajs/types"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
parallelize,
transform,
@@ -19,14 +20,12 @@ import {
type WorkflowInput = {
selector: FilterableCustomerAddressProps
update: UpdateCustomerAddressDTO
}
} & AdditionalData
export const updateCustomerAddressesWorkflowId = "update-customer-addresses"
export const updateCustomerAddressesWorkflow = createWorkflow(
updateCustomerAddressesWorkflowId,
(
input: WorkflowData<WorkflowInput>
): WorkflowResponse<CustomerAddressDTO[]> => {
(input: WorkflowData<WorkflowInput>) => {
const unsetInput = transform(input, (data) => ({
update: data,
}))
@@ -36,6 +35,14 @@ export const updateCustomerAddressesWorkflow = createWorkflow(
maybeUnsetDefaultBillingAddressesStep(unsetInput)
)
return new WorkflowResponse(updateCustomerAddressesStep(input))
const updatedAddresses = updateCustomerAddressesStep(input)
const addressesUpdated = createHook("addressesUpdated", {
addresses: updatedAddresses,
additional_data: input.additional_data,
})
return new WorkflowResponse(updatedAddresses, {
hooks: [addressesUpdated],
})
}
)
@@ -1,11 +1,12 @@
import {
CustomerDTO,
AdditionalData,
CustomerUpdatableFields,
FilterableCustomerProps,
} from "@medusajs/types"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
} from "@medusajs/workflows-sdk"
import { updateCustomersStep } from "../steps"
@@ -13,14 +14,22 @@ import { updateCustomersStep } from "../steps"
type UpdateCustomersStepInput = {
selector: FilterableCustomerProps
update: CustomerUpdatableFields
}
} & AdditionalData
type WorkflowInput = UpdateCustomersStepInput
export const updateCustomersWorkflowId = "update-customers"
export const updateCustomersWorkflow = createWorkflow(
updateCustomersWorkflowId,
(input: WorkflowData<WorkflowInput>): WorkflowResponse<CustomerDTO[]> => {
return new WorkflowResponse(updateCustomersStep(input))
(input: WorkflowData<WorkflowInput>) => {
const updatedCustomers = updateCustomersStep(input)
const customersUpdated = createHook("customersUpdated", {
customers: updatedCustomers,
additional_data: input.additional_data,
})
return new WorkflowResponse(updatedCustomers, {
hooks: [customersUpdated],
})
}
)