feat(*): shipping options update API (#6987)
**What** - Update the `updateShippingOptions` module service API to follow the newest convention - Add upsert support for shipping options - update shipping options workflow - update shipping options api end point and validation - update shipping options all integration tests FIXES CORE-1926
This commit is contained in:
1 parent
f65fbff535
commit
f132929c7e
20 files changed
+916
-74
No files matched your search
@@ -0,0 +1,44 @@
|
||||
import {
|
||||
ContainerRegistrationKeys,
|
||||
remoteQueryObjectFromString,
|
||||
} from "@medusajs/utils"
|
||||
import { AdminShippingOptionRetrieveResponse } from "@medusajs/types"
|
||||
import { AdminUpdateShippingOptionType } from "../validators"
|
||||
import { updateShippingOptionsWorkflow } from "@medusajs/core-flows"
|
||||
import {
|
||||
AuthenticatedMedusaRequest,
|
||||
MedusaResponse,
|
||||
} from "../../../../types/routing"
|
||||
|
||||
export const POST = async (
|
||||
req: AuthenticatedMedusaRequest<AdminUpdateShippingOptionType>,
|
||||
res: MedusaResponse<AdminShippingOptionRetrieveResponse>
|
||||
) => {
|
||||
const shippingOptionPayload = req.validatedBody
|
||||
|
||||
const workflow = updateShippingOptionsWorkflow(req.scope)
|
||||
|
||||
const { result, errors } = await workflow.run({
|
||||
input: [shippingOptionPayload],
|
||||
throwOnError: false,
|
||||
})
|
||||
|
||||
if (Array.isArray(errors) && errors[0]) {
|
||||
throw errors[0].error
|
||||
}
|
||||
|
||||
const shippingOptionId = result[0].id
|
||||
|
||||
const query = remoteQueryObjectFromString({
|
||||
entryPoint: "shipping_options",
|
||||
variables: {
|
||||
id: shippingOptionId,
|
||||
},
|
||||
fields: req.remoteQueryConfig.fields,
|
||||
})
|
||||
|
||||
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
|
||||
const [shippingOption] = await remoteQuery(query)
|
||||
|
||||
res.status(200).json({ shipping_option: shippingOption })
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
AdminGetShippingOptionParams,
|
||||
AdminShippingOptionRulesBatchAdd,
|
||||
AdminShippingOptionRulesBatchRemove,
|
||||
AdminUpdateShippingOption,
|
||||
} from "./validators"
|
||||
import { retrieveTransformQueryConfig } from "./query-config"
|
||||
import { validateAndTransformBody } from "../../utils/validate-body"
|
||||
@@ -28,6 +29,18 @@ export const adminShippingOptionRoutesMiddlewares: MiddlewareRoute[] = [
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
method: ["POST"],
|
||||
matcher: "/admin/shipping-options/:id",
|
||||
middlewares: [
|
||||
validateAndTransformQuery(
|
||||
AdminGetShippingOptionParams,
|
||||
retrieveTransformQueryConfig
|
||||
),
|
||||
validateAndTransformBody(AdminUpdateShippingOption),
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
method: ["POST"],
|
||||
matcher: "/admin/shipping-options/:id/rules/batch/add",
|
||||
|
||||
@@ -43,7 +43,7 @@ export type AdminShippingOptionRulesBatchRemoveType = z.infer<
|
||||
* SHIPPING OPTIONS
|
||||
*/
|
||||
|
||||
export const AdminCreateShippingOptionType = z
|
||||
export const AdminCreateShippingOptionTypeObject = z
|
||||
.object({
|
||||
label: z.string(),
|
||||
description: z.string(),
|
||||
@@ -74,7 +74,7 @@ export const AdminCreateShippingOption = z
|
||||
data: z.record(z.unknown()).optional(),
|
||||
price_type: z.nativeEnum(ShippingOptionPriceTypeEnum),
|
||||
provider_id: z.string(),
|
||||
type: AdminCreateShippingOptionType,
|
||||
type: AdminCreateShippingOptionTypeObject,
|
||||
prices: AdminCreateShippingOptionPriceWithCurrency.or(
|
||||
AdminCreateShippingOptionPriceWithRegion
|
||||
).array(),
|
||||
@@ -85,3 +85,18 @@ export const AdminCreateShippingOption = z
|
||||
export type AdminCreateShippingOptionType = z.infer<
|
||||
typeof AdminCreateShippingOption
|
||||
>
|
||||
|
||||
export const AdminUpdateShippingOption = z
|
||||
.object({
|
||||
id: z.string(),
|
||||
name: z.string().optional(),
|
||||
data: z.record(z.unknown()).optional(),
|
||||
price_type: z.nativeEnum(ShippingOptionPriceTypeEnum).optional(),
|
||||
provider_id: z.string().optional(),
|
||||
type: AdminCreateShippingOptionTypeObject.optional(),
|
||||
})
|
||||
.strict()
|
||||
|
||||
export type AdminUpdateShippingOptionType = z.infer<
|
||||
typeof AdminUpdateShippingOption
|
||||
>
|
||||
Reference in new issue
Block a user