@devx-commerce/plugin-gati
Version:
Gati ERP integration for Medusa
130 lines • 8.84 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.config = void 0;
exports.default = subCategoryMasterHandler;
const utils_1 = require("@medusajs/framework/utils");
const core_flows_1 = require("@medusajs/medusa/core-flows");
const sub_category_master_1 = require("../modules/sub-category-master");
const product_helper_1 = require("../workflows/helpers/product-helper");
/**
* Handles sub category master events by syncing them with Medusa sub categories
*/
async function subCategoryMasterHandler({ 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_master], } = await query.graph({
entity: "category_master",
fields: ["id", "mapping_id"],
filters: { category_code: data.category_code },
});
// TODO: remove math.random from handle
const { result } = await (0, core_flows_1.createProductCategoriesWorkflow)(container).run({
input: {
product_categories: [
{
name: data.sub_category_name,
handle: (0, product_helper_1.toKebabCase)([
data.sub_category_name,
data.sub_category_code,
Math.random().toString(36).substring(2, 15),
]),
is_active: false,
is_internal: false,
parent_category_id: category_master.mapping_id,
metadata: {
external_id: data.id,
},
},
],
additional_data: {
[data.id]: {
thumbnail: "",
images: [],
is_featured: false,
is_custom: false,
},
},
},
});
const subCategoryMasterService = container.resolve(sub_category_master_1.SUB_CATEGORY_MASTER_MODULE);
await subCategoryMasterService.updateSubCategoryMasters([
{
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: [sub_category_master], } = await query.graph({
entity: "sub_category_master",
fields: ["id", "mapping_id"],
filters: { id: data.id },
});
const { data: [category_master], } = await query.graph({
entity: "category_master",
fields: ["id", "mapping_id"],
filters: { grp_no: sub_category_master.grp_no },
});
if (!sub_category_master?.mapping_id) {
return;
}
await (0, core_flows_1.updateProductCategoriesWorkflow)(container).run({
input: {
selector: {
id: sub_category_master.mapping_id,
},
update: {
name: data.sub_category_name,
parent_category_id: category_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: "sub_category_master",
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWNhdGVnb3J5LW1hc3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9zdWItY2F0ZWdvcnktbWFzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQThCQSwyQ0F5QkM7QUF0REQscURBQXNFO0FBQ3RFLDREQUlxQztBQUVyQyx3RUFBNEU7QUFFNUUsd0VBQWtFO0FBaUJsRTs7R0FFRztBQUNZLEtBQUssVUFBVSx3QkFBd0IsQ0FBQyxFQUNyRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQzFCLFNBQVMsR0FDOEI7SUFDdkMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFDdEMsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QixRQUFRLFNBQVMsRUFBRSxDQUFDO2dCQUNsQixLQUFLLFFBQVE7b0JBQ1gsTUFBTSxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNwQyxNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFDWCxNQUFNLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3BDLE1BQU07Z0JBQ1IsS0FBSyxRQUFRO29CQUNYLE1BQU0sWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDcEMsTUFBTTtnQkFDUjtvQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzNELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELE1BQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILEtBQUss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