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:
@@ -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"
|
||||
|
||||
@@ -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[]
|
||||
)
|
||||
}
|
||||
)
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user