feat:Add confirmation step to product import (#8284)

CLOSES CC-251
This commit is contained in:
Stevche Radevski
2024-07-25 14:54:31 +00:00
committed by GitHub
parent 7f4b085964
commit 6d0650818a
11 changed files with 100 additions and 14 deletions
@@ -17,5 +17,5 @@ export const POST = async (
input,
})
res.status(202).json({ workflow_id: transaction.transactionId })
res.status(202).json({ transaction_id: transaction.transactionId })
}
@@ -0,0 +1,34 @@
import {
AuthenticatedMedusaRequest,
MedusaResponse,
} from "../../../../../../types/routing"
import { IWorkflowEngineService } from "@medusajs/types"
import { ModuleRegistrationName, TransactionHandlerType } from "@medusajs/utils"
import {
importProductsWorkflowId,
waitConfirmationProductImportStepId,
} from "@medusajs/core-flows"
import { StepResponse } from "@medusajs/workflows-sdk"
export const POST = async (
req: AuthenticatedMedusaRequest,
res: MedusaResponse
) => {
const workflowEngineService: IWorkflowEngineService = req.scope.resolve(
ModuleRegistrationName.WORKFLOW_ENGINE
)
const transactionId = req.params.transaction_id
await workflowEngineService.setStepSuccess({
idempotencyKey: {
action: TransactionHandlerType.INVOKE,
transactionId,
stepId: waitConfirmationProductImportStepId,
workflowId: importProductsWorkflowId,
},
stepResponse: new StepResponse(true),
})
res.status(202).json({})
}
@@ -19,12 +19,14 @@ export const POST = async (
)
}
const { transaction } = await importProductsWorkflow(req.scope).run({
const { result, transaction } = await importProductsWorkflow(req.scope).run({
input: {
filename: input.originalname,
fileContent: input.buffer.toString("utf-8"),
},
})
res.status(202).json({ workflow_id: transaction.transactionId })
res
.status(202)
.json({ transaction_id: transaction.transactionId, summary: result })
}
@@ -92,6 +92,11 @@ export const adminProductRoutesMiddlewares: MiddlewareRoute[] = [
matcher: "/admin/products/import",
middlewares: [upload.single("file")],
},
{
method: ["POST"],
matcher: "/admin/products/import/:transaction_id/confirm",
middlewares: [],
},
{
method: ["GET"],
matcher: "/admin/products/:id",