Files
medusa-store/packages/medusa/src/api/admin/inventory-items/route.ts

61 lines
1.6 KiB
TypeScript

import {
AuthenticatedMedusaRequest,
MedusaResponse,
} from "../../../types/routing"
import {
ContainerRegistrationKeys,
remoteQueryObjectFromString,
} from "@medusajs/utils"
import { createInventoryItemsWorkflow } from "@medusajs/core-flows"
import {
AdminCreateInventoryItemType,
AdminGetInventoryItemsParamsType,
} from "./validators"
import { refetchInventoryItem } from "./helpers"
import { HttpTypes } from "@medusajs/types"
export const POST = async (
req: AuthenticatedMedusaRequest<AdminCreateInventoryItemType>,
res: MedusaResponse<HttpTypes.AdminInventoryItemResponse>
) => {
const { result } = await createInventoryItemsWorkflow(req.scope).run({
input: { items: [req.validatedBody] },
})
const inventoryItem = await refetchInventoryItem(
result[0].id,
req.scope,
req.remoteQueryConfig.fields
)
res.status(200).json({ inventory_item: inventoryItem })
}
export const GET = async (
req: AuthenticatedMedusaRequest<AdminGetInventoryItemsParamsType>,
res: MedusaResponse<HttpTypes.AdminInventoryItemListResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
const query = remoteQueryObjectFromString({
entryPoint: "inventory_items",
variables: {
filters: req.filterableFields,
...req.remoteQueryConfig.pagination,
},
fields: req.remoteQueryConfig.fields,
})
const { rows: inventory_items, metadata } = await remoteQuery({
...query,
})
res.status(200).json({
inventory_items,
count: metadata.count,
offset: metadata.skip,
limit: metadata.take,
})
}