feat: Add create location fulfillment set flow + API (#6945)
This commit is contained in:
1 parent
01487970b2
commit
626aa09497
18 files changed
+291
-10
No files matched your search
@@ -0,0 +1,42 @@
|
||||
import { createLocationFulfillmentSetWorkflow } from "@medusajs/core-flows"
|
||||
import {
|
||||
ContainerRegistrationKeys,
|
||||
remoteQueryObjectFromString,
|
||||
} from "@medusajs/utils"
|
||||
import { z } from "zod"
|
||||
import { MedusaRequest, MedusaResponse } from "../../../../../types/routing"
|
||||
import { AdminCreateStockLocationFulfillmentSet } from "../../validators"
|
||||
|
||||
export const POST = async (
|
||||
req: MedusaRequest<z.infer<typeof AdminCreateStockLocationFulfillmentSet>>,
|
||||
res: MedusaResponse
|
||||
) => {
|
||||
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
|
||||
|
||||
const { errors } = await createLocationFulfillmentSetWorkflow(req.scope).run({
|
||||
input: {
|
||||
location_id: req.params.id,
|
||||
fulfillment_set_data: {
|
||||
name: req.validatedBody.name,
|
||||
type: req.validatedBody.type,
|
||||
},
|
||||
},
|
||||
throwOnError: false,
|
||||
})
|
||||
|
||||
if (Array.isArray(errors) && errors[0]) {
|
||||
throw errors[0].error
|
||||
}
|
||||
|
||||
const [stock_location] = await remoteQuery(
|
||||
remoteQueryObjectFromString({
|
||||
entryPoint: "stock_locations",
|
||||
variables: {
|
||||
id: req.params.id,
|
||||
},
|
||||
fields: req.remoteQueryConfig.fields,
|
||||
})
|
||||
)
|
||||
|
||||
res.status(200).json({ stock_location })
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
import * as QueryConfig from "./query-config"
|
||||
|
||||
import { transformBody, transformQuery } from "../../../api/middlewares"
|
||||
import {
|
||||
AdminCreateStockLocationFulfillmentSet,
|
||||
AdminGetStockLocationsLocationParams,
|
||||
AdminGetStockLocationsParams,
|
||||
AdminPostStockLocationsLocationParams,
|
||||
@@ -9,11 +11,11 @@ import {
|
||||
AdminPostStockLocationsReq,
|
||||
AdminStockLocationsLocationSalesChannelBatchReq,
|
||||
} from "./validators"
|
||||
import { transformBody, transformQuery } from "../../../api/middlewares"
|
||||
|
||||
import { MiddlewareRoute } from "../../../types/middlewares"
|
||||
import { applySalesChannelsFilter } from "./utils/apply-sales-channel-filter"
|
||||
import { authenticate } from "../../../utils/authenticate-middleware"
|
||||
import { validateAndTransformBody } from "../../utils/validate-body"
|
||||
import { applySalesChannelsFilter } from "./utils/apply-sales-channel-filter"
|
||||
|
||||
export const adminStockLocationRoutesMiddlewares: MiddlewareRoute[] = [
|
||||
{
|
||||
@@ -75,4 +77,15 @@ export const adminStockLocationRoutesMiddlewares: MiddlewareRoute[] = [
|
||||
),
|
||||
],
|
||||
},
|
||||
{
|
||||
method: ["POST"],
|
||||
matcher: "/admin/stock-locations/:id/fulfillment-sets",
|
||||
middlewares: [
|
||||
validateAndTransformBody(AdminCreateStockLocationFulfillmentSet),
|
||||
transformQuery(
|
||||
AdminPostStockLocationsParams,
|
||||
QueryConfig.retrieveTransformQueryConfig
|
||||
),
|
||||
],
|
||||
},
|
||||
]
|
||||
@@ -1,4 +1,4 @@
|
||||
import { FindParams, extendedFindParamsMixin } from "../../../types/common"
|
||||
import { Transform, Type } from "class-transformer"
|
||||
import {
|
||||
IsNotEmpty,
|
||||
IsObject,
|
||||
@@ -6,8 +6,9 @@ import {
|
||||
IsString,
|
||||
ValidateNested,
|
||||
} from "class-validator"
|
||||
import { Transform, Type } from "class-transformer"
|
||||
import { FindParams, extendedFindParamsMixin } from "../../../types/common"
|
||||
|
||||
import { z } from "zod"
|
||||
import { IsType } from "../../../utils"
|
||||
|
||||
/**
|
||||
@@ -286,3 +287,10 @@ export class AdminStockLocationsLocationSalesChannelBatchReq {
|
||||
@IsString({ each: true })
|
||||
sales_channel_ids: string[]
|
||||
}
|
||||
|
||||
export const AdminCreateStockLocationFulfillmentSet = z
|
||||
.object({
|
||||
name: z.string(),
|
||||
type: z.string(),
|
||||
})
|
||||
.strict()
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { Customer, User } from "../models"
|
||||
import type { NextFunction, Request, Response } from "express"
|
||||
import type { Customer, User } from "../models"
|
||||
|
||||
import { MedusaContainer, RequestQueryFields } from "@medusajs/types"
|
||||
import { FindConfig } from "./common"
|
||||
|
||||
Reference in new issue
Block a user