@devx-commerce/strapi
Version:
Medusa plugin for Strapi as CMS
59 lines • 5.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.upsertProductVariantsStrapiStep = 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.upsertProductVariantsStrapiStep = (0, workflows_sdk_1.createStep)("upsert-product-variants-strapi-step", async (input, { container }) => {
const strapiModuleService = container.resolve(strapi_1.STRAPI_MODULE);
const productModuleService = container.resolve(utils_1.Modules.PRODUCT);
const variants = [];
const originalMetadata = {};
try {
for (const variant of input.variants) {
// Store original metadata for compensation
originalMetadata[variant.id] = variant.metadata;
const entry = await strapiModuleService.upsertProductVariant(variant);
if (entry) {
await productModuleService.updateProductVariants(variant.id, {
metadata: {
...variant.metadata,
strapiId: entry.documentId,
strapiSyncedAt: new Date().valueOf(),
},
});
variants.push({
documentId: entry.documentId,
variantId: variant.id,
});
}
}
}
catch (e) {
return workflows_sdk_1.StepResponse.permanentFailure(`Error creating variants in Strapi: ${e.message}`, { variants, originalMetadata });
}
return new workflows_sdk_1.StepResponse(variants, { variants, originalMetadata });
}, async (compensateInput, { container }) => {
if (!compensateInput)
return;
const { variants, 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 variant of variants) {
try {
// Revert metadata to original state
if (originalMetadata[variant.variantId]) {
await productModuleService.updateProductVariants(variant.variantId, {
metadata: originalMetadata[variant.variantId],
});
}
// Delete the Strapi entry if it was created
await strapiModuleService.deleteProductVariant(variant.variantId);
}
catch (error) {
console.error(`Failed to compensate variant ${variant.variantId}:`, error);
}
}
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LXByb2R1Y3QtdmFyaWFudHMtc3RyYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy91cHNlcnQtcHJvZHVjdC12YXJpYW50cy1zdHJhcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscUVBQTZFO0FBQzdFLGlEQUFxRDtBQUVyRCxxREFBb0Q7QUFXdkMsUUFBQSwrQkFBK0IsR0FBRyxJQUFBLDBCQUFVLEVBQ3ZELHFDQUFxQyxFQUNyQyxLQUFLLEVBQUUsS0FBZ0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDeEMsTUFBTSxtQkFBbUIsR0FDdkIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxzQkFBYSxDQUFDLENBQUM7SUFDbkMsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVoRSxNQUFNLFFBQVEsR0FBaUIsRUFBRSxDQUFDO0lBQ2xDLE1BQU0sZ0JBQWdCLEdBQXdCLEVBQUUsQ0FBQztJQUVqRCxJQUFJLENBQUM7UUFDSCxLQUFLLE1BQU0sT0FBTyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQywyQ0FBMkM7WUFDM0MsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFFaEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0RSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLE1BQU0sb0JBQW9CLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRTtvQkFDM0QsUUFBUSxFQUFFO3dCQUNSLEdBQUcsT0FBTyxDQUFDLFFBQVE7d0JBQ25CLFFBQVEsRUFBRSxLQUFLLENBQUMsVUFBVTt3QkFDMUIsY0FBYyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFO3FCQUNyQztpQkFDRixDQUFDLENBQUM7Z0JBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQztvQkFDWixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7b0JBQzVCLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtpQkFDdEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sNEJBQVksQ0FBQyxnQkFBZ0IsQ0FDbEMsc0NBQXNDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFDakQsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0FBQ3BFLENBQUMsRUFDRCxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUN2QyxJQUFJLENBQUMsZUFBZTtRQUFFLE9BQU87SUFFN0IsTUFBTSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLGVBQWUsQ0FBQztJQUN2RCxNQUFNLG1CQUFtQixHQUN2QixTQUFTLENBQUMsT0FBTyxDQUFDLHNCQUFhLENBQUMsQ0FBQztJQUNuQyxNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWhFLHFEQUFxRDtJQUNyRCxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQztZQUNILG9DQUFvQztZQUNwQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxNQUFNLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7b0JBQ2xFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO2lCQUM5QyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsNENBQTRDO1lBQzVDLE1BQU0sbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FDWCxnQ0FBZ0MsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUNwRCxLQUFLLENBQ04sQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUNGLENBQUMifQ==