UNPKG

@jahp87/medusa-plugin-meilisearch

Version:

Medusa plugin for Meilisearch integration for Medusa 2

102 lines 8.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.config = void 0; exports.default = meilisearchProductUpsertHandler; const utils_1 = require("@medusajs/utils"); const utils_2 = require("@medusajs/framework/utils"); const utils_3 = require("../utils"); async function meilisearchProductUpsertHandler({ event: { data }, container, }) { const type = data.id.split('_')[0]; const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY); const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER); const productList = []; if ((await (0, utils_3.getProductsByPrefix)(type, query, data.id, logger)).length === 0) { productList.push(data.id); } else { // Si el ID del producto empieza con "res" o "iitem", obtenemos la lista de productos const products = await (0, utils_3.getProductsByPrefix)(type, query, data.id, logger); productList.push(...products); } const meilisearchService = container.resolve('meilisearch'); const { data: products } = await query.graph({ entity: 'product', fields: [ '*', // Todos los campos del producto 'options.*', 'images.*', 'tags.*', 'categories.*', 'variants.*', 'variants.calculated_price.*', 'variants.inventory_items.*', ], filters: { id: productList, // Filtrar por el ID del producto }, context: { variants: { calculated_price: (0, utils_2.QueryContext)({ region_id: meilisearchService.options.regionId, currency_code: meilisearchService.options.currencyCode, }), }, }, }); for (const product of products) { // Procesamos cada variante del producto for (const variant of product.variants) { // Verificamos si la variante tiene ítems de inventario if (variant.inventory_items && variant.inventory_items.length > 0) { // Obtenemos el ID del ítem de inventario const inventoryItemId = variant.inventory_items[0].inventory_item_id; // Consultamos los niveles de inventario para este ítem const { data: inventoryLevels } = await query.graph({ entity: 'inventory_level', fields: ['*', 'available_quantity'], filters: { inventory_item_id: inventoryItemId, }, }); // Asignamos la cantidad disponible a la variante variant.inventory_quantity = inventoryLevels.length > 0 ? inventoryLevels[0].available_quantity : 0; } else { // Si la variante no tiene ítems de inventario, establecemos la cantidad en 0 variant.inventory_quantity = 0; } } } // Ahora products contiene los productos con sus variantes y la propiedad inventory_quantity products.map(async (product) => { if (product.status === 'published') { await meilisearchService.addDocuments('products', [product], utils_1.SearchUtils.indexTypes.PRODUCTS); } else { // Si el estado no es "published", elimina el documento de MeiliSearch await meilisearchService.deleteDocument('products', product.id); } }); } exports.config = { event: [ utils_1.ProductEvents.PRODUCT_CREATED, utils_1.ProductEvents.PRODUCT_UPDATED, utils_1.InventoryEvents.RESERVATION_ITEM_DELETED, utils_1.InventoryEvents.RESERVATION_ITEM_UPDATED, utils_1.InventoryEvents.RESERVATION_ITEM_CREATED, utils_1.InventoryEvents.RESERVATION_ITEM_ATTACHED, utils_1.InventoryEvents.INVENTORY_ITEM_CREATED, utils_1.InventoryEvents.INVENTORY_ITEM_UPDATED, utils_1.InventoryEvents.INVENTORY_ITEM_DELETED, utils_1.InventoryEvents.INVENTORY_ITEM_RESTORED, utils_1.InventoryEvents.INVENTORY_ITEM_ATTACHED, utils_1.PricingEvents.PRICE_LIST_ATTACHED, utils_1.PricingEvents.PRICE_LIST_DETACHED, utils_1.PricingEvents.PRICE_LIST_CREATED, utils_1.PricingEvents.PRICE_LIST_UPDATED, utils_1.PricingEvents.PRICE_LIST_DELETED, utils_1.PricingEvents.PRICE_LIST_RESTORED, ], }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVpbGlzZWFyY2gtcHJvZHVjdC11cHNlcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvbWVpbGlzZWFyY2gtcHJvZHVjdC11cHNlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsa0RBbUZDO0FBeEZELDJDQUF1SDtBQUV2SCxxREFBd0Q7QUFDeEQsb0NBQThEO0FBRS9DLEtBQUssVUFBVSwrQkFBK0IsQ0FBQyxFQUM1RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDZixTQUFTLEdBQ3NCO0lBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEUsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUVsRSxNQUFNLFdBQVcsR0FBYSxFQUFFLENBQUE7SUFDaEMsSUFBSSxDQUFDLE1BQU0sSUFBQSwyQkFBbUIsRUFBQyxJQUFzQixFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzdGLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzNCLENBQUM7U0FBTSxDQUFDO1FBQ04scUZBQXFGO1FBQ3JGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSwyQkFBbUIsRUFBQyxJQUFzQixFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzFGLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQTtJQUMvQixD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