UNPKG

@devx-commerce/plugin-gati

Version:

Gati ERP integration for Medusa

117 lines 7.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.config = void 0; exports.default = categoryGroupMasterHandler; const utils_1 = require("@medusajs/framework/utils"); const core_flows_1 = require("@medusajs/medusa/core-flows"); const product_helper_1 = require("../workflows/helpers/product-helper"); const category_group_master_1 = require("../modules/category-group-master"); /** * Handles category master events by syncing them with Medusa categories */ async function categoryGroupMasterHandler({ 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) { // TODO: remove math.random from handle const { result } = await (0, core_flows_1.createProductCategoriesWorkflow)(container).run({ input: { product_categories: [ { name: data.category_group_name, handle: (0, product_helper_1.toKebabCase)([ data.category_group_name, data.category_group_code, Math.random().toString(36).substring(2, 15), ]), is_active: false, is_internal: false, metadata: { external_id: data.id, }, }, ], additional_data: { [data.id]: { thumbnail: "", images: [], is_featured: false, is_custom: false, }, }, }, }); const categoryGroupMasterService = container.resolve(category_group_master_1.CATEGORY_GROUP_MASTER_MODULE); await categoryGroupMasterService.updateCategoryGroupMasters([ { 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_group_master", fields: ["id", "mapping_id"], filters: { id: data.id }, }); 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_group_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.deleteProductCategoriesWorkflow)(container).run({ input: [data.mapping_id], }); } exports.config = { event: "category_group_master", }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktZ3JvdXAtbWFzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL2NhdGVnb3J5LWdyb3VwLW1hc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE4QkEsNkNBeUJDO0FBdERELHFEQUFzRTtBQUN0RSw0REFJcUM7QUFJckMsd0VBQWtFO0FBRWxFLDRFQUFnRjtBQWVoRjs7R0FFRztBQUNZLEtBQUssVUFBVSwwQkFBMEIsQ0FBQyxFQUN2RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQzFCLFNBQVMsR0FDZ0M7SUFDekMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFDdEMsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QixRQUFRLFNBQVMsRUFBRSxDQUFDO2dCQUNsQixLQUFLLFFBQVE7b0JBQ1gsTUFBTSxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUNwQyxNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFDWCxNQUFNLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3BDLE1BQU07Z0JBQ1IsS0FBSyxRQUFRO29CQUNYLE1BQU0sWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDcEMsTUFBTTtnQkFDUjtvQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzNELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELE1BQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILEtB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