@devx-commerce/strapi
Version:
Medusa plugin for Strapi as CMS
57 lines • 5.24 kB
JavaScript
;
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==