Feat(order): return reason and transaction methods (#7303)

This commit is contained in:
Carlos R. L. Rodrigues authored and GitHub committed 2024-05-13 16:15:25 +00:00
1 parent 8958214350
commit 6c94d0205c
23 files changed
+1036 -6

No files matched your search

@@ -8,7 +8,7 @@ import {
getSelectsAndRelationsFromObjectArray,
promiseAll,
} from "@medusajs/utils"
import { createStep, StepResponse } from "@medusajs/workflows-sdk"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
type UpdateCustomerGroupStepInput = {
selector: FilterableCustomerGroupProps
@@ -51,6 +51,7 @@ export const updateCustomerGroupsStep = createStep(
prevCustomerGroups.map((c) =>
service.updateCustomerGroups(c.id, {
name: c.name,
metadata: c.metadata,
})
)
)
@@ -0,0 +1,2 @@
export * from "./workflows"
export * from "./steps"
@@ -0,0 +1,36 @@
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
import {
CreateOrderReturnReasonDTO,
IOrderModuleService,
} from "@medusajs/types"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
export const createReturnReasonsStepId = "create-return-reasons"
export const createReturnReasonsStep = createStep(
createReturnReasonsStepId,
async (data: CreateOrderReturnReasonDTO[], { container }) => {
const service = container.resolve<IOrderModuleService>(
ModuleRegistrationName.ORDER
)
const createdReturnReasons = await service.createReturnReasons(data)
return new StepResponse(
createdReturnReasons,
createdReturnReasons.map(
(createdReturnReasons) => createdReturnReasons.id
)
)
},
async (createdReturnReasonIds, { container }) => {
if (!createdReturnReasonIds?.length) {
return
}
const service = container.resolve<IOrderModuleService>(
ModuleRegistrationName.ORDER
)
await service.deleteReturnReasons(createdReturnReasonIds)
}
)
@@ -0,0 +1,30 @@
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
import { IOrderModuleService } from "@medusajs/types"
import { createStep, StepResponse } from "@medusajs/workflows-sdk"
type DeleteReturnReasonStepInput = string[]
export const deleteReturnReasonStepId = "delete-return-reasons"
export const deleteReturnReasonStep = createStep(
deleteReturnReasonStepId,
async (ids: DeleteReturnReasonStepInput, { container }) => {
const service = container.resolve<IOrderModuleService>(
ModuleRegistrationName.ORDER
)
await service.softDeleteReturnReasons(ids)
return new StepResponse(void 0, ids)
},
async (prevReturnReasons, { container }) => {
if (!prevReturnReasons) {
return
}
const service = container.resolve<IOrderModuleService>(
ModuleRegistrationName.ORDER
)
await service.restoreReturnReasons(prevReturnReasons)
}
)
@@ -0,0 +1,3 @@
export * from "./create-return-reasons"
export * from "./delete-return-reasons"
export * from "./update-return-resons"
@@ -0,0 +1,61 @@
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
import {
FilterableOrderReturnReasonProps,
IOrderModuleService,
ReturnReasonUpdatableFields,
} from "@medusajs/types"
import {
getSelectsAndRelationsFromObjectArray,
promiseAll,
} from "@medusajs/utils"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
type UpdateReturnReasonStepInput = {
selector: FilterableOrderReturnReasonProps
update: ReturnReasonUpdatableFields
}
export const updateReturnReasonStepId = "update-return-reasons"
export const updateReturnReasonsStep = createStep(
updateReturnReasonStepId,
async (data: UpdateReturnReasonStepInput, { container }) => {
const service = container.resolve<IOrderModuleService>(
ModuleRegistrationName.ORDER
)
const { selects, relations } = getSelectsAndRelationsFromObjectArray([
data.update,
])
const prevReturnReasons = await service.listReturnReasons(data.selector, {
select: selects,
relations,
})
const reasons = await service.updateReturnReasons(
data.selector,
data.update
)
return new StepResponse(reasons, prevReturnReasons)
},
async (prevReturnReasons, { container }) => {
if (!prevReturnReasons) {
return
}
const service = container.resolve<IOrderModuleService>(
ModuleRegistrationName.ORDER
)
await promiseAll(
prevReturnReasons.map((c) =>
service.updateReturnReasons(c.id, {
value: c.value,
label: c.label,
description: c.description,
metadata: c.metadata,
})
)
)
}
)
@@ -0,0 +1,18 @@
import {
CreateOrderReturnReasonDTO,
OrderReturnReasonDTO,
} from "@medusajs/types"
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { createReturnReasonsStep } from "../steps"
type WorkflowInput = { data: CreateOrderReturnReasonDTO[] }
export const createReturnReasonsWorkflowId = "create-return-reasons"
export const createReturnReasonsWorkflow = createWorkflow(
createReturnReasonsWorkflowId,
(
input: WorkflowData<WorkflowInput>
): WorkflowData<OrderReturnReasonDTO[]> => {
return createReturnReasonsStep(input.data)
}
)
@@ -0,0 +1,12 @@
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { deleteReturnReasonStep } from "../steps"
type WorkflowInput = { ids: string[] }
export const deleteReturnReasonsWorkflowId = "delete-return-reasons"
export const deleteReturnReasonsWorkflow = createWorkflow(
deleteReturnReasonsWorkflowId,
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
return deleteReturnReasonStep(input.ids)
}
)
@@ -0,0 +1,3 @@
export * from "./create-return-reasons"
export * from "./delete-return-reasons"
export * from "./update-return-reasons"
@@ -0,0 +1,22 @@
import {
FilterableOrderReturnReasonProps,
OrderReturnReasonDTO,
ReturnReasonUpdatableFields,
} from "@medusajs/types"
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { updateReturnReasonsStep } from "../steps"
type WorkflowInput = {
selector: FilterableOrderReturnReasonProps
update: ReturnReasonUpdatableFields
}
export const updateReturnReasonsWorkflowId = "update-return-reasons"
export const updateReturnReasonsWorkflow = createWorkflow(
updateReturnReasonsWorkflowId,
(
input: WorkflowData<WorkflowInput>
): WorkflowData<OrderReturnReasonDTO[]> => {
return updateReturnReasonsStep(input)
}
)