feat(core-flows,medusa): added api + workflows for rule types CRUD (#6684)
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
export * from "./steps"
|
||||
export * from "./workflows"
|
||||
@@ -0,0 +1,31 @@
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import { CreateRuleTypeDTO, IPricingModuleService } from "@medusajs/types"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
export const createPricingRuleTypesStepId = "create-pricing-rule-types"
|
||||
export const createPricingRuleTypesStep = createStep(
|
||||
createPricingRuleTypesStepId,
|
||||
async (data: CreateRuleTypeDTO[], { container }) => {
|
||||
const pricingModule = container.resolve<IPricingModuleService>(
|
||||
ModuleRegistrationName.PRICING
|
||||
)
|
||||
|
||||
const ruleTypes = await pricingModule.createRuleTypes(data)
|
||||
|
||||
return new StepResponse(
|
||||
ruleTypes,
|
||||
ruleTypes.map((ruleType) => ruleType.id)
|
||||
)
|
||||
},
|
||||
async (ruleTypeIds, { container }) => {
|
||||
if (!ruleTypeIds?.length) {
|
||||
return
|
||||
}
|
||||
|
||||
const pricingModule = container.resolve<IPricingModuleService>(
|
||||
ModuleRegistrationName.PRICING
|
||||
)
|
||||
|
||||
await pricingModule.delete(ruleTypeIds)
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,31 @@
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import { IPricingModuleService } from "@medusajs/types"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
export const deletePricingRuleTypesStepId = "delete-pricing-rule-types"
|
||||
export const deletePricingRuleTypesStep = createStep(
|
||||
deletePricingRuleTypesStepId,
|
||||
async (ids: string[], { container }) => {
|
||||
const pricingModule = container.resolve<IPricingModuleService>(
|
||||
ModuleRegistrationName.PRICING
|
||||
)
|
||||
|
||||
// TODO: implement soft deleting rule types
|
||||
// await pricingModule.softDeleteRuleTypes(ids)
|
||||
await pricingModule.deleteRuleTypes(ids)
|
||||
|
||||
return new StepResponse(void 0, ids)
|
||||
},
|
||||
async (ids, { container }) => {
|
||||
if (!ids?.length) {
|
||||
return
|
||||
}
|
||||
|
||||
const pricingModule = container.resolve<IPricingModuleService>(
|
||||
ModuleRegistrationName.PRICING
|
||||
)
|
||||
|
||||
// TODO: implement restoring soft deleted rule types
|
||||
// await pricingModule.restoreRuleTypes(ids)
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,3 @@
|
||||
export * from "./create-pricing-rule-types"
|
||||
export * from "./delete-pricing-rule-types"
|
||||
export * from "./update-pricing-rule-types"
|
||||
@@ -0,0 +1,48 @@
|
||||
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
|
||||
import { IPricingModuleService, UpdateRuleTypeDTO } from "@medusajs/types"
|
||||
import {
|
||||
convertItemResponseToUpdateRequest,
|
||||
getSelectsAndRelationsFromObjectArray,
|
||||
} from "@medusajs/utils"
|
||||
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
|
||||
|
||||
export const updatePricingRuleTypesStepId = "update-pricing-rule-types"
|
||||
export const updatePricingRuleTypesStep = createStep(
|
||||
updatePricingRuleTypesStepId,
|
||||
async (data: UpdateRuleTypeDTO[], { container }) => {
|
||||
const pricingModule = container.resolve<IPricingModuleService>(
|
||||
ModuleRegistrationName.PRICING
|
||||
)
|
||||
|
||||
const { selects, relations } = getSelectsAndRelationsFromObjectArray(data)
|
||||
const dataBeforeUpdate = await pricingModule.listRuleTypes(
|
||||
{ id: data.map((d) => d.id) },
|
||||
{ relations, select: selects }
|
||||
)
|
||||
|
||||
const updatedRuleTypes = await pricingModule.updateRuleTypes(data)
|
||||
|
||||
return new StepResponse(updatedRuleTypes, {
|
||||
dataBeforeUpdate,
|
||||
selects,
|
||||
relations,
|
||||
})
|
||||
},
|
||||
async (revertInput, { container }) => {
|
||||
if (!revertInput) {
|
||||
return
|
||||
}
|
||||
|
||||
const { dataBeforeUpdate = [], selects, relations } = revertInput
|
||||
|
||||
const pricingModule = container.resolve<IPricingModuleService>(
|
||||
ModuleRegistrationName.PRICING
|
||||
)
|
||||
|
||||
await pricingModule.update(
|
||||
dataBeforeUpdate.map((data) =>
|
||||
convertItemResponseToUpdateRequest(data, selects, relations)
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,13 @@
|
||||
import { CreateRuleTypeDTO, RuleTypeDTO } from "@medusajs/types"
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import { createPricingRuleTypesStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { data: CreateRuleTypeDTO[] }
|
||||
|
||||
export const createPricingRuleTypesWorkflowId = "create-pricing-rule-types"
|
||||
export const createPricingRuleTypesWorkflow = createWorkflow(
|
||||
createPricingRuleTypesWorkflowId,
|
||||
(input: WorkflowData<WorkflowInput>): WorkflowData<RuleTypeDTO[]> => {
|
||||
return createPricingRuleTypesStep(input.data)
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,12 @@
|
||||
import { createWorkflow, WorkflowData } from "@medusajs/workflows-sdk"
|
||||
import { deletePricingRuleTypesStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { ids: string[] }
|
||||
|
||||
export const deletePricingRuleTypesWorkflowId = "delete-pricing-rule-types"
|
||||
export const deletePricingRuleTypesWorkflow = createWorkflow(
|
||||
deletePricingRuleTypesWorkflowId,
|
||||
(input: WorkflowData<WorkflowInput>): WorkflowData<void> => {
|
||||
deletePricingRuleTypesStep(input.ids)
|
||||
}
|
||||
)
|
||||
@@ -0,0 +1,3 @@
|
||||
export * from "./create-pricing-rule-types"
|
||||
export * from "./delete-pricing-rule-types"
|
||||
export * from "./update-pricing-rule-types"
|
||||
@@ -0,0 +1,13 @@
|
||||
import { RuleTypeDTO, UpdateRuleTypeDTO } from "@medusajs/types"
|
||||
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
|
||||
import { updatePricingRuleTypesStep } from "../steps"
|
||||
|
||||
type WorkflowInput = { data: UpdateRuleTypeDTO[] }
|
||||
|
||||
export const updatePricingRuleTypesWorkflowId = "update-pricing-rule-types"
|
||||
export const updatePricingRuleTypesWorkflow = createWorkflow(
|
||||
updatePricingRuleTypesWorkflowId,
|
||||
(input: WorkflowData<WorkflowInput>): WorkflowData<RuleTypeDTO[]> => {
|
||||
return updatePricingRuleTypesStep(input.data)
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user