61 lines
1.6 KiB
TypeScript
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,
|
|
})
|
|
}
|