UNPKG

@devx-commerce/strapi

Version:

Medusa plugin for Strapi as CMS

57 lines 5.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.upsertProductsStrapiStep = void 0; const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk"); const strapi_1 = require("../../modules/strapi"); const utils_1 = require("@medusajs/framework/utils"); exports.upsertProductsStrapiStep = (0, workflows_sdk_1.createStep)("upsert-products-strapi-step", async (input, { container }) => { const strapiModuleService = container.resolve(strapi_1.STRAPI_MODULE); const productModuleService = container.resolve(utils_1.Modules.PRODUCT); const products = []; const originalMetadata = {}; try { for (const product of input.products) { // Store original metadata for compensation originalMetadata[product.id] = product.metadata; const entry = await strapiModuleService.upsertProduct(product); await productModuleService.updateProducts(product.id, { metadata: { ...product.metadata, strapiId: entry.documentId, strapiSyncedAt: new Date().valueOf(), }, }); products.push({ documentId: entry.documentId, productId: product.id, }); } } catch (e) { return workflows_sdk_1.StepResponse.permanentFailure(`Error creating products in Strapi: ${e.message}`, { products, originalMetadata }); } return new workflows_sdk_1.StepResponse(products, { products, originalMetadata }); }, async (compensateInput, { container }) => { if (!compensateInput) return; const { products, originalMetadata } = compensateInput; const strapiModuleService = container.resolve(strapi_1.STRAPI_MODULE); const productModuleService = container.resolve(utils_1.Modules.PRODUCT); // Revert metadata changes and delete created entries for (const product of products) { try { // Revert metadata to original state if (originalMetadata[product.productId]) { await productModuleService.updateProducts(product.productId, { metadata: originalMetadata[product.productId], }); } // Delete the Strapi entry if it was created await strapiModuleService.deleteProduct(product.productId); } catch (error) { console.error(`Failed to compensate product ${product.productId}:`, error); } } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LXByb2R1Y3RzLXN0cmFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvc3RlcHMvdXBzZXJ0LXByb2R1Y3RzLXN0cmFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxRUFBNkU7QUFDN0UsaURBQXFEO0FBRXJELHFEQUFvRDtBQVd2QyxRQUFBLHdCQUF3QixHQUFHLElBQUEsMEJBQVUsRUFDaEQsNkJBQTZCLEVBQzdCLEtBQUssRUFBRSxLQUFnQixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUN4QyxNQUFNLG1CQUFtQixHQUN2QixTQUFTLENBQUMsT0FBTyxDQUFDLHNCQUFhLENBQUMsQ0FBQztJQUNuQyxNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWhFLE1BQU0sUUFBUSxHQUFpQixFQUFFLENBQUM7SUFDbEMsTUFBTSxnQkFBZ0IsR0FBd0IsRUFBRSxDQUFDO0lBRWpELElBQUksQ0FBQztRQUNILEtBQUssTUFBTSxPQUFPLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLDJDQUEyQztZQUMzQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUVoRCxNQUFNLEtBQUssR0FBRyxNQUFNLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvRCxNQUFNLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO2dCQUNwRCxRQUFRLEVBQUU7b0JBQ1IsR0FBRyxPQUFPLENBQUMsUUFBUTtvQkFDbkIsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVO29CQUMxQixjQUFjLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7aUJBQ3JDO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDWixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7Z0JBQzVCLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTthQUN0QixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxPQUFPLDRCQUFZLENBQUMsZ0JBQWdCLENBQ2xDLHNDQUFzQyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQ2pELEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLENBQy9CLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQUNwRSxDQUFDLEVBQ0QsS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdkMsSUFBSSxDQUFDLGVBQWU7UUFBRSxPQUFPO0lBRTdCLE1BQU0sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxlQUFlLENBQUM7SUFDdkQsTUFBTSxtQkFBbUIsR0FDdkIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxzQkFBYSxDQUFDLENBQUM7SUFDbkMsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVoRSxxREFBcUQ7SUFDckQsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUM7WUFDSCxvQ0FBb0M7WUFDcEMsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtvQkFDM0QsUUFBUSxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7aUJBQzlDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCw0Q0FBNEM7WUFDNUMsTUFBTSxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FDWCxnQ0FBZ0MsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUNwRCxLQUFLLENBQ04sQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUNGLENBQUMifQ==