@devx-commerce/plugin-gati
Version:
Gati ERP integration for Medusa
115 lines • 7.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.config = void 0;
exports.default = collectionMasterHandler;
const utils_1 = require("@medusajs/framework/utils");
const core_flows_1 = require("@medusajs/medusa/core-flows");
const collection_master_1 = require("../modules/collection-master");
const product_helper_1 = require("../workflows/helpers/product-helper");
/**
* Handles collection master events by syncing them with Medusa collections
*/
async function collectionMasterHandler({ event: { data: eventData }, container, }) {
try {
const { operation, data } = eventData;
for (const item of data) {
switch (operation) {
case "create":
await handleCreate(container, item);
break;
case "update":
await handleUpdate(container, item);
break;
case "delete":
await handleDelete(container, item);
break;
default:
throw new Error(`Unsupported operation: ${operation}`);
}
}
}
catch (error) {
console.error("Error in collection master handler:", error);
throw error;
}
}
/**
* Creates a new collection in Medusa and updates the collection master mapping
*/
async function handleCreate(container, data) {
const { result } = await (0, core_flows_1.createCollectionsWorkflow)(container).run({
input: {
collections: [
{
title: data.collection_name,
handle: (0, product_helper_1.toKebabCase)([data.collection_name]),
metadata: {
external_id: data.id,
},
},
],
additional_data: {
[data.id]: {
thumbnail: "",
images: [],
is_featured: false,
is_active: false,
is_custom: false,
smart_collection_type: null,
smart_collection_price_range: null,
},
},
},
});
const collectionMasterService = container.resolve(collection_master_1.COLLECTION_MASTER_MODULE);
await collectionMasterService.updateCollectionMasters([
{
id: data.id,
mapping_id: result[0].id,
},
]);
}
/**
* Updates an existing collection in Medusa if it has a mapping
*/
async function handleUpdate(container, data) {
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
const { data: [collection_master], } = await query.graph({
entity: "collection_master",
fields: ["id", "mapping_id"],
filters: { id: data.id },
});
if (!collection_master?.mapping_id) {
return;
}
await (0, core_flows_1.updateCollectionsWorkflow)(container).run({
input: {
selector: {
id: collection_master.mapping_id,
},
update: {
title: data.collection_name,
metadata: {
external_id: data.id,
},
},
},
});
}
/**
* Deletes a collection in Medusa if it has a mapping
*/
async function handleDelete(container, data) {
if (!data?.mapping_id) {
return;
}
await (0, core_flows_1.deleteCollectionsWorkflow)(container).run({
input: {
ids: [data.mapping_id],
},
});
}
exports.config = {
event: "collection_master",
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1tYXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvY29sbGVjdGlvbi1tYXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBK0JBLDBDQXlCQztBQXZERCxxREFBc0U7QUFDdEUsNERBSXFDO0FBRXJDLG9FQUF3RTtBQUV4RSx3RUFBa0U7QUFrQmxFOztHQUVHO0FBQ1ksS0FBSyxVQUFVLHVCQUF1QixDQUFDLEVBQ3BELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFDMUIsU0FBUyxHQUM2QjtJQUN0QyxJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQztRQUN0QyxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hCLFFBQVEsU0FBUyxFQUFFLENBQUM7Z0JBQ2xCLEtBQUssUUFBUTtvQkFDWCxNQUFNLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3BDLE1BQU07Z0JBQ1IsS0FBSyxRQUFRO29CQUNYLE1BQU0sWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDcEMsTUFBTTtnQkFDUixLQUFLLFFBQVE7b0JBQ1gsTUFBTSxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNwQyxNQUFNO2dCQUNSO29CQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDM0QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMscUNBQXFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUQsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsS0FBSyxVQUFV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