feat(medusa, core-flows): add ppdate inventory item endpoint (#6735)

* init update inventory item

* prep for pr
This commit is contained in:
Philip Korsholm
2024-03-20 14:45:06 +01:00
committed by GitHub
parent 8155e2cfad
commit 64c2731e46
8 changed files with 249 additions and 26 deletions
@@ -5,4 +5,5 @@ export * from "./create-inventory-items"
export * from "./validate-singular-inventory-items-for-tags"
export * from "./create-inventory-levels"
export * from "./validate-inventory-locations"
export * from "./update-inventory-items"
export * from "./delete-inventory-levels"
@@ -0,0 +1,49 @@
import { IInventoryServiceNext, InventoryNext } from "@medusajs/types"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
import {
convertItemResponseToUpdateRequest,
getSelectsAndRelationsFromObjectArray,
} from "@medusajs/utils"
import { ModuleRegistrationName } from "@medusajs/modules-sdk"
export const updateInventoryItemsStepId = "update-inventory-items-step"
export const updateInventoryItemsStep = createStep(
updateInventoryItemsStepId,
async (input: InventoryNext.UpdateInventoryItemInput[], { container }) => {
const inventoryService = container.resolve<IInventoryServiceNext>(
ModuleRegistrationName.INVENTORY
)
const { selects, relations } = getSelectsAndRelationsFromObjectArray(input)
const dataBeforeUpdate = await inventoryService.list(
{ id: input.map(({ id }) => id) },
{}
)
const updatedInventoryItems = await inventoryService.update(input)
return new StepResponse(updatedInventoryItems, {
dataBeforeUpdate,
selects,
relations,
})
},
async (revertInput, { container }) => {
if (!revertInput?.dataBeforeUpdate?.length) {
return
}
const { dataBeforeUpdate, selects, relations } = revertInput
const inventoryService = container.resolve<IInventoryServiceNext>(
ModuleRegistrationName.INVENTORY
)
await inventoryService.update(
dataBeforeUpdate.map((data) =>
convertItemResponseToUpdateRequest(data, selects, relations)
)
)
}
)
@@ -1,4 +1,5 @@
export * from "./delete-inventory-items"
export * from "./create-inventory-items"
export * from "./create-inventory-levels"
export * from "./update-inventory-items"
export * from "./delete-inventory-levels"
@@ -0,0 +1,17 @@
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { InventoryNext } from "@medusajs/types"
import { updateInventoryItemsStep } from "../steps"
interface WorkflowInput {
updates: InventoryNext.UpdateInventoryItemInput[]
}
export const updateInventoryItemsWorkflowId = "update-inventory-items-workflow"
export const updateInventoryItemsWorkflow = createWorkflow(
updateInventoryItemsWorkflowId,
(
input: WorkflowData<WorkflowInput>
): WorkflowData<InventoryNext.InventoryItemDTO[]> => {
return updateInventoryItemsStep(input.updates)
}
)