chore: add batch update prices for price lists (#6999)
This commit is contained in:
1 parent
dd35a4dbff
commit
5e953f8cf3
12 files changed
+166
-293
No files matched your search
@@ -0,0 +1,38 @@
|
||||
import { updatePriceListPricesWorkflow } from "@medusajs/core-flows"
|
||||
import {
|
||||
AuthenticatedMedusaRequest,
|
||||
MedusaResponse,
|
||||
} from "../../../../../../../types/routing"
|
||||
import { getPriceList } from "../../../../queries"
|
||||
import {
|
||||
adminPriceListRemoteQueryFields,
|
||||
defaultAdminPriceListFields,
|
||||
} from "../../../../query-config"
|
||||
import { AdminPostPriceListPriceBatchUpdate } from "../../../../validators"
|
||||
|
||||
export const POST = async (
|
||||
req: AuthenticatedMedusaRequest<AdminPostPriceListPriceBatchUpdate>,
|
||||
res: MedusaResponse
|
||||
) => {
|
||||
const { prices } = req.validatedBody
|
||||
|
||||
const id = req.params.id
|
||||
const workflow = updatePriceListPricesWorkflow(req.scope)
|
||||
const { errors } = await workflow.run({
|
||||
input: { data: [{ id, prices }] },
|
||||
throwOnError: false,
|
||||
})
|
||||
|
||||
if (Array.isArray(errors) && errors[0]) {
|
||||
throw errors[0].error
|
||||
}
|
||||
|
||||
const priceList = await getPriceList({
|
||||
id,
|
||||
container: req.scope,
|
||||
remoteQueryFields: adminPriceListRemoteQueryFields,
|
||||
apiFields: defaultAdminPriceListFields,
|
||||
})
|
||||
|
||||
res.status(200).json({ price_list: priceList })
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import * as QueryConfig from "./query-config"
|
||||
import {
|
||||
AdminGetPriceListsParams,
|
||||
AdminGetPriceListsPriceListParams,
|
||||
AdminPostPriceListPriceBatchUpdate,
|
||||
AdminPostPriceListsPriceListPricesBatchAddReq,
|
||||
AdminPostPriceListsPriceListPricesBatchRemoveReq,
|
||||
AdminPostPriceListsPriceListReq,
|
||||
@@ -59,4 +60,9 @@ export const adminPriceListsRoutesMiddlewares: MiddlewareRoute[] = [
|
||||
transformBody(AdminPostPriceListsPriceListPricesBatchRemoveReq),
|
||||
],
|
||||
},
|
||||
{
|
||||
method: ["POST"],
|
||||
matcher: "/admin/price-lists/:id/prices/batch/update",
|
||||
middlewares: [transformBody(AdminPostPriceListPriceBatchUpdate)],
|
||||
},
|
||||
]
|
||||
@@ -7,7 +7,6 @@ import {
|
||||
IsObject,
|
||||
IsOptional,
|
||||
IsString,
|
||||
ValidateIf,
|
||||
ValidateNested,
|
||||
} from "class-validator"
|
||||
import { FindParams } from "../../../types/common"
|
||||
@@ -111,32 +110,33 @@ export class AdminPostPriceListsPriceListPricesBatchAddReq {
|
||||
prices: AdminPriceListPricesCreateReq[]
|
||||
}
|
||||
|
||||
export class AdminPostPriceListPriceBatchUpdate {
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
prices: AdminPostPriceListPriceUpdate[]
|
||||
}
|
||||
|
||||
export class AdminPostPriceListsPriceListPricesBatchRemoveReq {
|
||||
@IsArray()
|
||||
@IsString({ each: true })
|
||||
ids: string[]
|
||||
}
|
||||
|
||||
export class AdminPriceListPricesUpdateReq {
|
||||
@IsOptional()
|
||||
export class AdminPostPriceListPriceUpdate {
|
||||
@IsString()
|
||||
id: string
|
||||
|
||||
@IsString()
|
||||
variant_id: string
|
||||
|
||||
@IsOptional()
|
||||
@ValidateIf((object) => !object.id)
|
||||
@IsString()
|
||||
currency_code?: string
|
||||
|
||||
@IsOptional()
|
||||
@ValidateIf((object) => !object.id)
|
||||
@IsInt()
|
||||
amount?: number
|
||||
|
||||
@IsOptional()
|
||||
@ValidateIf((object) => !object.id)
|
||||
@IsString()
|
||||
variant_id: string
|
||||
|
||||
@IsOptional()
|
||||
@IsInt()
|
||||
min_quantity?: number
|
||||
|
||||
Reference in new issue
Block a user