chore: add batch update prices for price lists (#6999)

This commit is contained in:
Riqwan Thamir authored and GitHub committed 2024-04-08 09:23:23 +02:00
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