UNPKG

@devx-commerce/plugin-product-reviews

Version:
89 lines 8.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.config = void 0; exports.default = productReviewBulkUploadHandler; const product_review_1 = require("../modules/product-review"); const download_csv_1 = require("../workflows/product-reviews/workflows/download-csv"); const create_product_review_1 = require("../workflows/product-reviews/workflows/create-product-review"); async function productReviewBulkUploadHandler({ event, container, }) { const logger = container.resolve("logger"); const productReviewService = container.resolve(product_review_1.PRODUCT_REVIEW_MODULE); const { csv_url } = event.data; const { result: reviews } = await (0, download_csv_1.downloadCsvWorkflow)(container).run({ input: { csv_url }, }); // Process reviews in batches to avoid memory issues const batchSize = 10; const totalReviews = reviews.length; let processedCount = 0; let successCount = 0; let failedCount = 0; const errors = []; logger.info(`Starting bulk upload of ${totalReviews} product reviews`); for (let i = 0; i < totalReviews; i += batchSize) { const batch = reviews.slice(i, i + batchSize); const batchPromises = batch.map((review) => (0, create_product_review_1.createProductReviewWorkflow)(container) .run({ input: { product_id: review.product_id, rating: parseInt(review.rating, 10), title: review.title || "", description: review.description || "", ...(review.email && { email: review.email }), ...(review.phone && { phone: review.phone }), ...(review.name && { name: review.name }), ...(review.order_id && review.order_item_id && { order: { id: review.order_id, item_id: review.order_item_id, }, }), medias: [ ...(review?.image_medias?.split(",")?.map((url) => ({ url, type: "IMAGE", })) || []), ...(review?.video_medias?.split(",")?.map((url) => ({ url, type: "VIDEO", })) || []), ], }, throwOnError: false, }) .then(({ errors }) => { if (errors.length) { return { review, success: false, error: errors.map(({ error }) => error.message), }; } return { review, success: true, error: null }; }) .catch((error) => ({ review, success: false, error }))); const results = await Promise.all(batchPromises); for (const result of results) { if (result.success) { successCount++; } else { failedCount++; errors.push({ ...result.review, error: result.error || result.error?.message || "Unknown error", }); } processedCount++; } // Log progress after each batch logger.info(`Processed ${processedCount}/${totalReviews} reviews. Success: ${successCount}, Failed: ${failedCount}`); } console.log("errors: ", errors); logger.info(`Processing bulk upload of ${reviews.length} product reviews completed. Success: ${successCount}, Failed: ${failedCount}`); } exports.config = { event: "product_review.bulk_upload", }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1yZXZpZXctYnVsay11cGxvYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3Vic2NyaWJlcnMvcHJvZHVjdC1yZXZpZXctYnVsay11cGxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBY0EsaURBa0dDO0FBNUdELDhEQUFrRTtBQUVsRSxzRkFBMEY7QUFDMUYsd0dBQTJHO0FBTzVGLEtBQUssVUFBVSw4QkFBOEIsQ0FBQyxFQUMzRCxLQUFLLEVBQ0wsU0FBUyxHQUMyQjtJQUNwQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sb0JBQW9CLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDNUMsc0NBQXFCLENBQ3RCLENBQUM7SUFDRixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJQUUvQixNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sSUFBQSxrQ0FBbUIsRUFBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDbkUsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFO0tBQ25CLENBQUMsQ0FBQztJQUVILG9EQUFvRDtJQUNwRCxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDckIsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDdkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztJQUNwQixNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7SUFFdkIsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsWUFBWSxrQkFBa0IsQ0FBQyxDQUFDO0lBRXZFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2pELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUU5QyxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDekMsSUFBQSxtREFBMkIsRUFBQyxTQUFTLENBQUM7YUFDbkMsR0FBRyxDQUFDO1lBQ0gsS0FBSyxFQUFFO2dCQUNMLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtnQkFDN0IsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztnQkFDbkMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDekIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRTtnQkFDckMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM1QyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzVDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRO29CQUNqQixNQUFNLENBQUMsYUFBYSxJQUFJO29CQUN0QixLQUFLLEVBQUU7d0JBQ0wsRUFBRSxFQUFFLE1BQU0sQ0FBQyxRQUFRO3dCQUNuQixPQUFPLEVBQUUsTUFBTSxDQUFDLGFBQWE7cUJBQzlCO2lCQUNGLENBQUM7Z0JBQ0osTUFBTSxFQUFFO29CQUNOLEdBQUcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ2xELEdBQUc7d0JBQ0gsSUFBSSxFQUFFLE9BQTRCO3FCQUNuQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ1YsR0FBRyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDbEQsR0FBRzt3QkFDSCxJQUFJLEVBQUUsT0FBNEI7cUJBQ25DLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDWDthQUNGO1lBQ0QsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQzthQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtZQUNuQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsT0FBTztvQkFDTCxNQUFNO29CQUNOLE9BQU8sRUFBRSxLQUFLO29CQUNkLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztpQkFDaEQsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ2hELENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FDekQsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVqRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNuQixZQUFZLEVBQUUsQ0FBQztZQUNqQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sV0FBVyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDVixHQUFHLE1BQU0sQ0FBQyxNQUFNO29CQUNoQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sSUFBSSxlQUFlO2lCQUNoRSxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsY0FBYyxFQUFFLENBQUM7UUFDbkIsQ0FBQztRQUVELGdDQUFnQztRQUNoQyxNQUFNLENBQUMsSUFBSSxDQUNULGFBQWEsY0FBYyxJQUFJLFlBQVksc0JBQXNCLFlBQVksYUFBYSxXQUFXLEVBQUUsQ0FDeEcsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVoQyxNQUFNLENBQUMsSUFBSSxDQUNULDZCQUE2QixPQUFPLENBQUMsTUFBTSx3Q0FBd0MsWUFBWSxhQUFhLFdBQVcsRUFBRSxDQUMxSCxDQUFDO0FBQ0osQ0FBQztBQUVZLFFBQUEsTUFBTSxHQUFxQjtJQUN0QyxLQUFLLEVBQUUsNEJBQTRCO0NBQ3BDLENBQUMifQ==