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