UNPKG

@devx-commerce/strapi-x-custom-jw-mayave

Version:

Medusa plugin for Strapi as CMS - JW Mayave Custom Release

92 lines 8.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.config = void 0; exports.default = strapiCategoriesSyncHandler; const utils_1 = require("@medusajs/framework/utils"); const upsert_categories_strapi_1 = require("../workflows/upsert-categories-strapi"); async function strapiCategoriesSyncHandler({ event, container, }) { const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER); const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY); logger.info("Starting Strapi categories sync with improved error handling"); try { const batchSize = 100; let hasMore = true; let offset = 0; let totalCount = 0; let successCount = 0; let errorCount = 0; while (hasMore) { try { const { data: categories, metadata: { count } = {} } = await query.graph({ entity: "product_category", fields: ["id", "name", "handle", "metadata"], pagination: { skip: offset, take: batchSize, }, }); if (categories.length) { logger.info(`Processing batch of ${categories.length} categories (offset: ${offset})`); // Process each category individually to handle errors gracefully for (const category of categories) { try { // // Import the workflow dynamically to avoid circular dependencies // const { upsertCategoriesStrapiWorkflow } = await import( // "@devx-commerce/strapi/workflows/upsert-categories-strapi" // ); await (0, upsert_categories_strapi_1.upsertCategoriesStrapiWorkflow)(container).run({ input: { category_ids: [category.id], }, }); successCount++; logger.debug(`Successfully synced category: ${category.name} (ID: ${category.id})`); } catch (categoryError) { errorCount++; logger.error(`Failed to sync category ${category.name} (ID: ${category.id}): ${categoryError instanceof Error ? categoryError.message : String(categoryError)}`); if (categoryError instanceof Error && categoryError.stack) { logger.error(`Stack trace: ${categoryError.stack}`); } // Continue with next category instead of failing the entire batch continue; } } } hasMore = categories.length === batchSize; offset += batchSize; totalCount = count ?? 0; } catch (batchError) { logger.error(`Failed to process batch at offset ${offset}: ${batchError instanceof Error ? batchError.message : String(batchError)}`); if (batchError instanceof Error && batchError.stack) { logger.error(`Stack trace: ${batchError.stack}`); } // Move to next batch instead of stopping offset += batchSize; errorCount += batchSize; continue; } } logger.info(`Strapi categories sync completed: Total: ${totalCount}, Successful: ${successCount}, Failed: ${errorCount}, Success Rate: ${totalCount > 0 ? `${((successCount / totalCount) * 100).toFixed(2)}%` : "0%"}`); } catch (error) { logger.error(`Strapi categories sync failed with critical error: ${error instanceof Error ? error.message : String(error)}`); if (error instanceof Error && error.stack) { logger.error(`Stack trace: ${error.stack}`); } logger.error(`Event data: ${JSON.stringify(event?.data)}`); // Don't throw the error to prevent the event system from retrying // The error is logged and individual category failures are handled above } } exports.config = { event: "strapi-categories.sync", }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1jYXRlZ29yaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N1YnNjcmliZXJzL3N5bmMtY2F0ZWdvcmllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSw4Q0FvSEM7QUF2SEQscURBQXNFO0FBQ3RFLG9GQUF1RjtBQUV4RSxLQUFLLFVBQVUsMkJBQTJCLENBQUMsRUFDeEQsS0FBSyxFQUNMLFNBQVMsR0FDTTtJQUNmLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVqRSxNQUFNLENBQUMsSUFBSSxDQUFDLDhEQUE4RCxDQUFDLENBQUM7SUFFNUUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztRQUVuQixPQUFPLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDO2dCQUNILE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUNsRCxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7b0JBQ2hCLE1BQU0sRUFBRSxrQkFBa0I7b0JBQzFCLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQztvQkFDNUMsVUFBVSxFQUFFO3dCQUNWLElBQUksRUFBRSxNQUFNO3dCQUNaLElBQUksRUFB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