UNPKG

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

Version:

Medusa plugin for Strapi as CMS - JW Mayave Custom Release

88 lines 8.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.config = void 0; exports.default = strapiCollectionsSyncHandler; const utils_1 = require("@medusajs/framework/utils"); const upsert_collections_strapi_1 = require("../workflows/upsert-collections-strapi"); async function strapiCollectionsSyncHandler({ event, container, }) { const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER); const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY); logger.info("Starting Strapi collections 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: collections, metadata: { count } = {} } = await query.graph({ entity: "product_collection", fields: ["id", "title", "handle", "metadata"], pagination: { skip: offset, take: batchSize, }, }); if (collections.length) { logger.info(`Processing batch of ${collections.length} collections (offset: ${offset})`); // Process each collection individually to handle errors gracefully for (const collection of collections) { try { await (0, upsert_collections_strapi_1.upsertCollectionsStrapiWorkflow)(container).run({ input: { collection_ids: [collection.id], }, }); successCount++; logger.debug(`Successfully synced collection: ${collection.title} (ID: ${collection.id})`); } catch (collectionError) { errorCount++; logger.error(`Failed to sync collection ${collection.title} (ID: ${collection.id}): ${collectionError instanceof Error ? collectionError.message : String(collectionError)}`); if (collectionError instanceof Error && collectionError.stack) { logger.error(`Stack trace: ${collectionError.stack}`); } // Continue with next collection instead of failing the entire batch continue; } } } hasMore = collections.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 collections sync completed: Total: ${totalCount}, Successful: ${successCount}, Failed: ${errorCount}, Success Rate: ${totalCount > 0 ? `${((successCount / totalCount) * 100).toFixed(2)}%` : "0%"}`); } catch (error) { logger.error(`Strapi collections 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 collection failures are handled above } } exports.config = { event: "strapi-collections.sync", }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1jb2xsZWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9zeW5jLWNvbGxlY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLCtDQStHQztBQWxIRCxxREFBc0U7QUFDdEUsc0ZBQXlGO0FBRTFFLEtBQUssVUFBVSw0QkFBNEIsQ0FBQyxFQUN6RCxLQUFLLEVBQ0wsU0FBUyxHQUNNO0lBQ2YsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpFLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0RBQStELENBQUMsQ0FBQztJQUU3RSxJQUFJLENBQUM7UUFDSCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDdEIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRW5CLE9BQU8sT0FBTyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQ25ELE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztvQkFDaEIsTUFBTSxFQUFFLG9CQUFvQjtvQkFDNUIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDO29CQUM3QyxVQUFVLEVBQUU7d0JBQ1YsSUFBSSxFQUFFLE1BQU07d0JBQ1osSUFBSSxF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