@devx-commerce/plugin-gati
Version:
Gati ERP integration for Medusa
130 lines • 8.78 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.config = void 0;
exports.default = categoryMasterHandler;
const utils_1 = require("@medusajs/framework/utils");
const core_flows_1 = require("@medusajs/medusa/core-flows");
const category_master_1 = require("../modules/category-master");
const product_helper_1 = require("../workflows/helpers/product-helper");
/**
* Handles category master events by syncing them with Medusa categories
*/
async function categoryMasterHandler({ 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 category master handler:", error);
throw error;
}
}
/**
* Creates a new collection in Medusa and updates the collection master mapping
*/
async function handleCreate(container, data) {
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
const { data: [category_group_master], } = await query.graph({
entity: "category_group_master",
fields: ["id", "mapping_id"],
filters: { grp_no: data.grp_group_no },
});
// TODO: remove math.random from handle
const { result } = await (0, core_flows_1.createProductCategoriesWorkflow)(container).run({
input: {
product_categories: [
{
name: data.category_name,
handle: (0, product_helper_1.toKebabCase)([
data.category_name,
data.category_code,
Math.random().toString(36).substring(2, 15),
]),
is_active: false,
is_internal: false,
parent_category_id: category_group_master?.mapping_id,
metadata: {
external_id: data.id,
},
},
],
additional_data: {
[data.id]: {
thumbnail: "",
images: [],
is_featured: false,
is_custom: false,
},
},
},
});
const categoryMasterService = container.resolve(category_master_1.CATEGORY_MASTER_MODULE);
await categoryMasterService.updateCategoryMasters([
{
id: data.id,
mapping_id: result[0].id,
},
]);
}
/**
* Updates an existing category in Medusa if it has a mapping
*/
async function handleUpdate(container, data) {
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
const { data: [category_master], } = await query.graph({
entity: "category_master",
fields: ["id", "mapping_id"],
filters: { id: data.id },
});
const { data: [category_group_master], } = await query.graph({
entity: "category_group_master",
fields: ["id", "mapping_id"],
filters: { grp_no: category_master.grp_group_no },
});
if (!category_master?.mapping_id) {
return;
}
await (0, core_flows_1.updateProductCategoriesWorkflow)(container).run({
input: {
selector: {
id: category_master.mapping_id,
},
update: {
name: data.category_name,
parent_category_id: category_group_master?.mapping_id,
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.deleteProductCategoriesWorkflow)(container).run({
input: [data.mapping_id],
});
}
exports.config = {
event: "category_master",
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktbWFzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL2NhdGVnb3J5LW1hc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUErQkEsd0NBeUJDO0FBdkRELHFEQUFzRTtBQUN0RSw0REFJcUM7QUFFckMsZ0VBQW9FO0FBRXBFLHdFQUFrRTtBQWtCbEU7O0dBRUc7QUFDWSxLQUFLLFVBQVUscUJBQXFCLENBQUMsRUFDbEQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUMxQixTQUFTLEdBQzJCO0lBQ3BDLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBQ3RDLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDeEIsUUFBUSxTQUFTLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxRQUFRO29CQUNYLE1BQU0sWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDcEMsTUFBTTtnQkFDUixLQUFLLFFBQVE7b0JBQ1gsTUFBTSxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNwQyxNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFDWCxNQUFNLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3BDLE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUMzRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxLQUFLLFVBQVUsWUFB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