feat: Add product export endpoint and a dummy workflow (#8178)
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import {
|
||||
AuthenticatedMedusaRequest,
|
||||
MedusaResponse,
|
||||
} from "../../../../types/routing"
|
||||
import { HttpTypes } from "@medusajs/types"
|
||||
import { remapKeysForProduct } from "../helpers"
|
||||
import { exportProductsWorkflow } from "@medusajs/core-flows"
|
||||
|
||||
export const POST = async (
|
||||
req: AuthenticatedMedusaRequest<HttpTypes.AdminExportProductRequest>,
|
||||
res: MedusaResponse<HttpTypes.AdminExportProductResponse>
|
||||
) => {
|
||||
const selectFields = remapKeysForProduct(req.remoteQueryConfig.fields ?? [])
|
||||
const input = { select: selectFields, filter: req.filterableFields }
|
||||
|
||||
const { transaction } = await exportProductsWorkflow(req.scope).run({
|
||||
input,
|
||||
})
|
||||
|
||||
res.status(202).json({ workflow_id: transaction.transactionId })
|
||||
}
|
||||
@@ -16,6 +16,7 @@ import {
|
||||
AdminCreateProductOption,
|
||||
AdminCreateProductVariant,
|
||||
AdminCreateVariantInventoryItem,
|
||||
AdminExportProduct,
|
||||
AdminGetProductOptionParams,
|
||||
AdminGetProductOptionsParams,
|
||||
AdminGetProductParams,
|
||||
@@ -69,12 +70,23 @@ export const adminProductRoutesMiddlewares: MiddlewareRoute[] = [
|
||||
),
|
||||
],
|
||||
},
|
||||
{
|
||||
method: ["POST"],
|
||||
matcher: "/admin/products/export",
|
||||
middlewares: [
|
||||
validateAndTransformBody(AdminExportProduct),
|
||||
validateAndTransformQuery(
|
||||
AdminGetProductsParams,
|
||||
QueryConfig.listProductQueryConfig
|
||||
),
|
||||
],
|
||||
},
|
||||
{
|
||||
method: ["GET"],
|
||||
matcher: "/admin/products/:id",
|
||||
middlewares: [
|
||||
unlessPath(
|
||||
/.*\/products\/batch/,
|
||||
/.*\/products\/(batch|export)/,
|
||||
validateAndTransformQuery(
|
||||
AdminGetProductParams,
|
||||
QueryConfig.retrieveProductQueryConfig
|
||||
@@ -87,11 +99,11 @@ export const adminProductRoutesMiddlewares: MiddlewareRoute[] = [
|
||||
matcher: "/admin/products/:id",
|
||||
middlewares: [
|
||||
unlessPath(
|
||||
/.*\/products\/batch/,
|
||||
/.*\/products\/(batch|export)/,
|
||||
validateAndTransformBody(AdminUpdateProduct)
|
||||
),
|
||||
unlessPath(
|
||||
/.*\/products\/batch/,
|
||||
/.*\/products\/(batch|export)/,
|
||||
validateAndTransformQuery(
|
||||
AdminGetProductParams,
|
||||
QueryConfig.retrieveProductQueryConfig
|
||||
@@ -104,7 +116,7 @@ export const adminProductRoutesMiddlewares: MiddlewareRoute[] = [
|
||||
matcher: "/admin/products/:id",
|
||||
middlewares: [
|
||||
unlessPath(
|
||||
/.*\/products\/batch/,
|
||||
/.*\/products\/(batch|export)/,
|
||||
validateAndTransformQuery(
|
||||
AdminGetProductParams,
|
||||
QueryConfig.retrieveProductQueryConfig
|
||||
|
||||
@@ -268,6 +268,9 @@ export const AdminBatchUpdateProduct = AdminUpdateProduct.extend({
|
||||
id: z.string(),
|
||||
})
|
||||
|
||||
export type AdminExportProductType = z.infer<typeof AdminExportProduct>
|
||||
export const AdminExportProduct = z.object({})
|
||||
|
||||
// TODO: Handle in create and update product once ready
|
||||
// @IsOptional()
|
||||
// @Type(() => ProductProductCategoryReq)
|
||||
|
||||
Reference in New Issue
Block a user