feat: delete shipping options (#6993)

This commit is contained in:
Adrien de Peretti
2024-04-09 15:30:22 +02:00
committed by GitHub
parent 21be6ff7ed
commit e1a0960e20
18 changed files with 524 additions and 38 deletions
@@ -2,9 +2,15 @@ import {
ContainerRegistrationKeys,
remoteQueryObjectFromString,
} from "@medusajs/utils"
import { AdminShippingOptionRetrieveResponse } from "@medusajs/types"
import {
AdminShippingOptionDeleteResponse,
AdminShippingOptionRetrieveResponse,
} from "@medusajs/types"
import { AdminUpdateShippingOptionType } from "../validators"
import { updateShippingOptionsWorkflow } from "@medusajs/core-flows"
import {
deleteShippingOptionsWorkflow,
updateShippingOptionsWorkflow,
} from "@medusajs/core-flows"
import {
AuthenticatedMedusaRequest,
MedusaResponse,
@@ -42,3 +48,25 @@ export const POST = async (
res.status(200).json({ shipping_option: shippingOption })
}
export const DELETE = async (
req: AuthenticatedMedusaRequest,
res: MedusaResponse<AdminShippingOptionDeleteResponse>
) => {
const shippingOptionId = req.params.id
const workflow = deleteShippingOptionsWorkflow(req.scope)
const { errors } = await workflow.run({
input: { ids: [shippingOptionId] },
throwOnError: false,
})
if (Array.isArray(errors) && errors[0]) {
throw errors[0].error
}
res
.status(200)
.json({ id: shippingOptionId, object: "shipping_option", deleted: true })
}
@@ -3,11 +3,15 @@ import { authenticate } from "../../../utils/authenticate-middleware"
import {
AdminCreateShippingOption,
AdminGetShippingOptionParams,
AdminListShippingOptionParams,
AdminShippingOptionRulesBatchAdd,
AdminShippingOptionRulesBatchRemove,
AdminUpdateShippingOption,
} from "./validators"
import { retrieveTransformQueryConfig } from "./query-config"
import {
listTransformQueryConfig,
retrieveTransformQueryConfig,
} from "./query-config"
import { validateAndTransformBody } from "../../utils/validate-body"
import { validateAndTransformQuery } from "../../utils/validate-query"
@@ -17,6 +21,17 @@ export const adminShippingOptionRoutesMiddlewares: MiddlewareRoute[] = [
middlewares: [authenticate("admin", ["bearer", "session"])],
},
{
method: ["GET"],
matcher: "/admin/shipping-options",
middlewares: [
validateAndTransformQuery(
AdminListShippingOptionParams,
listTransformQueryConfig
),
],
},
{
method: ["POST"],
matcher: "/admin/shipping-options",
@@ -41,6 +56,11 @@ export const adminShippingOptionRoutesMiddlewares: MiddlewareRoute[] = [
],
},
{
method: ["DELETE"],
matcher: "/admin/shipping-options/:id",
},
{
method: ["POST"],
matcher: "/admin/shipping-options/:id/rules/batch/add",
@@ -3,13 +3,43 @@ import {
ContainerRegistrationKeys,
remoteQueryObjectFromString,
} from "@medusajs/utils"
import { AdminShippingOptionRetrieveResponse } from "@medusajs/types"
import {
AdminShippingOptionListResponse,
AdminShippingOptionRetrieveResponse
} from "@medusajs/types"
import {
AuthenticatedMedusaRequest,
MedusaResponse,
} from "../../../types/routing"
import { AdminCreateShippingOptionType } from "./validators"
export const GET = async (
req: AuthenticatedMedusaRequest,
res: MedusaResponse<AdminShippingOptionListResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)
const variables = {
filters: req.filterableFields,
...req.remoteQueryConfig.pagination,
}
const queryObject = remoteQueryObjectFromString({
entryPoint: "shipping_options",
variables,
fields: req.remoteQueryConfig.fields,
})
const { rows: shipping_options, metadata } = await remoteQuery(queryObject)
res.json({
shipping_options,
count: metadata.count,
offset: metadata.skip,
limit: metadata.take,
})
}
export const POST = async (
req: AuthenticatedMedusaRequest<AdminCreateShippingOptionType>,
res: MedusaResponse<AdminShippingOptionRetrieveResponse>
@@ -3,9 +3,13 @@ import {
ShippingOptionPriceType as ShippingOptionPriceTypeEnum,
} from "@medusajs/utils"
import { z } from "zod"
import { createSelectParams } from "../../utils/validators"
import { createFindParams, createSelectParams } from "../../utils/validators"
export const AdminGetShippingOptionParams = createSelectParams()
export const AdminListShippingOptionParams = createFindParams({
offset: 0,
limit: 20,
})
/**
* SHIPPING OPTIONS RULES
@@ -99,4 +103,4 @@ export const AdminUpdateShippingOption = z
export type AdminUpdateShippingOptionType = z.infer<
typeof AdminUpdateShippingOption
>
>