feature: add workflows hooks to the order module (#8496)

This commit is contained in:
Harminder Virk
2024-08-08 16:25:11 +05:30
committed by GitHub
parent 3259b9204c
commit 08764e3965
14 changed files with 163 additions and 71 deletions

View File

@@ -11,7 +11,7 @@ import {
} from "../../../types/routing"
import { AdminCreateDraftOrderType } from "./validators"
import { refetchOrder } from "./helpers"
import { CreateOrderDTO } from "@medusajs/types"
import { AdditionalData, CreateOrderDTO } from "@medusajs/types"
export const GET = async (req: MedusaRequest, res: MedusaResponse) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
@@ -39,7 +39,7 @@ export const GET = async (req: MedusaRequest, res: MedusaResponse) => {
}
export const POST = async (
req: AuthenticatedMedusaRequest<AdminCreateDraftOrderType>,
req: AuthenticatedMedusaRequest<AdminCreateDraftOrderType & AdditionalData>,
res: MedusaResponse
) => {
const input = req.validatedBody
@@ -48,7 +48,7 @@ export const POST = async (
no_notification: !!input.no_notification_order,
status: OrderStatus.DRAFT,
is_draft_order: true,
} as CreateOrderDTO
} as CreateOrderDTO & AdditionalData
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)

View File

@@ -1,6 +1,10 @@
import { z, ZodObject } from "zod"
import { z } from "zod"
import { AddressPayload, BigNumberInput } from "../../utils/common-validators"
import { createFindParams, createSelectParams } from "../../utils/validators"
import {
createFindParams,
createSelectParams,
WithAdditionalData,
} from "../../utils/validators"
export type AdminGetOrderParamsType = z.infer<typeof AdminGetOrderParams>
export const AdminGetOrderParams = createSelectParams()
@@ -49,8 +53,8 @@ const Item = z
return true
})
export type AdminCreateDraftOrderType = z.infer<typeof _AdminCreateDraftOrder>
const _AdminCreateDraftOrder = z
export type AdminCreateDraftOrderType = z.infer<typeof CreateDraftOrder>
const CreateDraftOrder = z
.object({
status: z.nativeEnum(Status).optional(),
sales_channel_id: z.string().nullish(),
@@ -68,19 +72,18 @@ const _AdminCreateDraftOrder = z
})
.strict()
export const AdminCreateDraftOrder = (customSchema?: ZodObject<any, any>) => {
const schema = customSchema
? _AdminCreateDraftOrder.merge(customSchema)
: _AdminCreateDraftOrder
export const AdminCreateDraftOrder = WithAdditionalData(
CreateDraftOrder,
(schema) => {
return schema.refine(
(data) => {
if (!data.email && !data.customer_id) {
return false
}
return schema.refine(
(data) => {
if (!data.email && !data.customer_id) {
return false
}
return true
},
{ message: "Either email or customer_id must be provided" }
)
}
return true
},
{ message: "Either email or customer_id must be provided" }
)
}
)