feat: Implemented price set update with prices and aligned pricing API (#6872)

This commit is contained in:
Stevche Radevski
2024-03-29 10:23:24 +00:00
committed by GitHub
parent 85a27c3572
commit 86f499de2f
9 changed files with 326 additions and 49 deletions
@@ -1,26 +1,36 @@
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
import { IPricingModuleService, UpdatePriceSetDTO } from "@medusajs/types"
import { IPricingModuleService, PricingTypes } from "@medusajs/types"
import {
convertItemResponseToUpdateRequest,
getSelectsAndRelationsFromObjectArray,
} from "@medusajs/utils"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
type UpdatePriceSetsStepInput = {
selector: PricingTypes.FilterablePriceSetProps
update: PricingTypes.UpdatePriceSetDTO
}
export const updatePriceSetsStepId = "update-price-sets"
export const updatePriceSetsStep = createStep(
updatePriceSetsStepId,
async (data: UpdatePriceSetDTO[], { container }) => {
async (data: UpdatePriceSetsStepInput, { container }) => {
const pricingModule = container.resolve<IPricingModuleService>(
ModuleRegistrationName.PRICING
)
const { selects, relations } = getSelectsAndRelationsFromObjectArray(data)
const dataBeforeUpdate = await pricingModule.list(
{ id: data.map((d) => d.id) },
{ relations, select: selects }
)
const { selects, relations } = getSelectsAndRelationsFromObjectArray([
data.update,
])
const updatedPriceSets = await pricingModule.update(data)
const dataBeforeUpdate = await pricingModule.list(data.selector, {
select: selects,
relations,
})
const updatedPriceSets = await pricingModule.update(
data.selector,
data.update
)
return new StepResponse(updatedPriceSets, {
dataBeforeUpdate,
@@ -29,17 +39,17 @@ export const updatePriceSetsStep = createStep(
})
},
async (revertInput, { container }) => {
if (!revertInput) {
if (!revertInput || !revertInput.dataBeforeUpdate?.length) {
return
}
const { dataBeforeUpdate = [], selects, relations } = revertInput
const { dataBeforeUpdate, selects, relations } = revertInput
const pricingModule = container.resolve<IPricingModuleService>(
ModuleRegistrationName.PRICING
)
await pricingModule.update(
await pricingModule.upsert(
dataBeforeUpdate.map((data) =>
convertItemResponseToUpdateRequest(data, selects, relations)
)
@@ -39,7 +39,7 @@ export const updatePricingRuleTypesStep = createStep(
ModuleRegistrationName.PRICING
)
await pricingModule.update(
await pricingModule.updateRuleTypes(
dataBeforeUpdate.map((data) =>
convertItemResponseToUpdateRequest(data, selects, relations)
)