feat(core-flows, types, medusa): Add Update location level endpoint for api-v2 (#6743)

* initialize update-location-level

* update middlewares

* readd middleware

* pr feedback
This commit is contained in:
Philip Korsholm
2024-03-25 07:43:41 +01:00
committed by GitHub
parent 0168c819da
commit aa154665de
11 changed files with 269 additions and 10 deletions

View File

@@ -6,3 +6,4 @@ export * from "./create-inventory-levels"
export * from "./validate-inventory-locations"
export * from "./update-inventory-items"
export * from "./delete-inventory-levels"
export * from "./update-inventory-levels"

View File

@@ -0,0 +1,57 @@
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 updateInventoryLevelsStepId = "update-inventory-levels-step"
export const updateInventoryLevelsStep = createStep(
updateInventoryLevelsStepId,
async (
input: InventoryNext.BulkUpdateInventoryLevelInput[],
{ container }
) => {
const inventoryService: IInventoryServiceNext = container.resolve(
ModuleRegistrationName.INVENTORY
)
const { selects, relations } = getSelectsAndRelationsFromObjectArray(input)
const dataBeforeUpdate = await inventoryService.listInventoryLevels(
{
$or: input.map(({ inventory_item_id, location_id }) => ({
inventory_item_id,
location_id,
})),
},
{}
)
const updatedLevels: InventoryNext.InventoryLevelDTO[] =
await inventoryService.updateInventoryLevels(input)
return new StepResponse(updatedLevels, {
dataBeforeUpdate,
selects,
relations,
})
},
async (revertInput, { container }) => {
if (!revertInput?.dataBeforeUpdate?.length) {
return
}
const { dataBeforeUpdate, selects, relations } = revertInput
const inventoryService = container.resolve(ModuleRegistrationName.INVENTORY)
await inventoryService.updateInventoryLevels(
dataBeforeUpdate.map((data) =>
convertItemResponseToUpdateRequest(data, selects, relations)
) as InventoryNext.BulkUpdateInventoryLevelInput[]
)
}
)

View File

@@ -3,3 +3,4 @@ export * from "./create-inventory-items"
export * from "./create-inventory-levels"
export * from "./update-inventory-items"
export * from "./delete-inventory-levels"
export * from "./update-inventory-levels"

View File

@@ -0,0 +1,16 @@
import { InventoryLevelDTO, InventoryNext } from "@medusajs/types"
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { updateInventoryLevelsStep } from "../steps/update-inventory-levels"
interface WorkflowInput {
updates: InventoryNext.BulkUpdateInventoryLevelInput[]
}
export const updateInventoryLevelsWorkflowId =
"update-inventory-levels-workflow"
export const updateInventoryLevelsWorkflow = createWorkflow(
updateInventoryLevelsWorkflowId,
(input: WorkflowData<WorkflowInput>): WorkflowData<InventoryLevelDTO[]> => {
return updateInventoryLevelsStep(input.updates)
}
)