Feat: admin return reason list (#8482)

* feat: add missing endpoints to return reason sdk

* add return reason list route

* add return reason query hooks

* fix update return reasons in order modules service

* fix store/return-reasons middleware

* add missing tests for /return-resasons/:id
This commit is contained in:
Christian
2024-08-08 16:24:13 +02:00
committed by GitHub
parent f9989e1659
commit d4c5f6593d
36 changed files with 724 additions and 90 deletions
@@ -2,31 +2,38 @@ import {
deleteReturnReasonsWorkflow,
updateReturnReasonsWorkflow,
} from "@medusajs/core-flows"
import { UpdateOrderReturnReasonDTO } from "@medusajs/types"
import {
AdminReturnReasonResponse,
UpdateOrderReturnReasonDTO,
} from "@medusajs/types"
import {
ContainerRegistrationKeys,
MedusaError,
remoteQueryObjectFromString,
} from "@medusajs/utils"
import {
AuthenticatedMedusaRequest,
MedusaResponse,
} from "../../../../types/routing"
import { refetchEntity } from "../../../utils/refetch-entity"
export const GET = async (
req: AuthenticatedMedusaRequest,
res: MedusaResponse
res: MedusaResponse<AdminReturnReasonResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
const return_reason = await refetchEntity(
"return_reason",
req.params.id,
req.scope,
req.remoteQueryConfig.fields
)
const variables = { id: req.params.id }
const queryObject = remoteQueryObjectFromString({
entryPoint: "return_reason",
variables,
fields: req.remoteQueryConfig.fields,
})
const [return_reason] = await remoteQuery(queryObject)
if (!return_reason) {
throw new MedusaError(
MedusaError.Types.NOT_FOUND,
`Return reason with id: ${req.params.id} was not found`
)
}
res.json({ return_reason })
}
@@ -6,6 +6,7 @@ import {
AdminCreateReturnReason,
AdminGetReturnReasonsParams,
AdminGetReturnReasonsReturnReasonParams,
AdminUpdateReturnReason,
} from "./validators"
export const adminReturnReasonRoutesMiddlewares: MiddlewareRoute[] = [
@@ -40,6 +41,17 @@ export const adminReturnReasonRoutesMiddlewares: MiddlewareRoute[] = [
),
],
},
{
method: ["POST"],
matcher: "/admin/return-reasons/:id",
middlewares: [
validateAndTransformBody(AdminUpdateReturnReason),
validateAndTransformQuery(
AdminGetReturnReasonsReturnReasonParams,
QueryConfig.retrieveTransformQueryConfig
),
],
},
{
method: ["DELETE"],
matcher: "/admin/return-reasons/:id",
@@ -8,13 +8,13 @@ import {
AuthenticatedMedusaRequest,
MedusaResponse,
} from "../../../types/routing"
import { AdminGetReturnReasonsParamsType } from "./validators"
export const GET = async (
req: AuthenticatedMedusaRequest,
req: AuthenticatedMedusaRequest<AdminGetReturnReasonsParamsType>,
res: MedusaResponse
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
const queryObject = remoteQueryObjectFromString({
entryPoint: "return_reason",
variables: {
@@ -29,10 +29,11 @@ export type AdminGetReturnReasonsReturnReasonParamsType = z.infer<
* Parameters used to filter and configure the pagination of the retrieved order.
*/
export const AdminGetReturnReasonsParams = createFindParams({
limit: 15,
offset: 0,
limit: 20,
}).merge(
z.object({
q: z.string().optional(),
id: z.union([z.string(), z.array(z.string())]).optional(),
value: z.union([z.string(), z.array(z.string())]).optional(),
label: z.union([z.string(), z.array(z.string())]).optional(),
@@ -43,8 +44,11 @@ export const AdminGetReturnReasonsParams = createFindParams({
created_at: createOperatorMap().optional(),
updated_at: createOperatorMap().optional(),
deleted_at: createOperatorMap().optional(),
$and: z.lazy(() => AdminGetReturnReasonsParams.array()).optional(),
$or: z.lazy(() => AdminGetReturnReasonsParams.array()).optional(),
})
)
export type AdminGetReturnReasonsParamsType = z.infer<
typeof AdminGetReturnReasonsParams
>
@@ -6,7 +6,7 @@ import { StoreReturnReasonParams } from "./validators"
export const storeReturnReasonRoutesMiddlewares: MiddlewareRoute[] = [
{
method: ["GET"],
matcher: "/admin/return-reasons",
matcher: "/store/return-reasons",
middlewares: [
validateAndTransformQuery(
StoreReturnReasonParams,
@@ -16,7 +16,7 @@ export const storeReturnReasonRoutesMiddlewares: MiddlewareRoute[] = [
},
{
method: ["GET"],
matcher: "/admin/return-reasons/:id",
matcher: "/store/return-reasons/:id",
middlewares: [
validateAndTransformQuery(
StoreReturnReasonParams,