UNPKG

@devx-commerce/plugin-product-reviews

Version:
43 lines 3.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.config = void 0; exports.default = refreshAllProductReviewStats; const utils_1 = require("@medusajs/framework/utils"); const refresh_product_review_stats_1 = require("../workflows/product-reviews/workflows/refresh-product-review-stats"); /** * Scheduled job that runs at 3 AM every night to refresh product review stats for all products */ async function refreshAllProductReviewStats(container) { const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER); const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY); try { logger.info("Starting nightly product review stats refresh..."); // Get all product IDs const { data: products } = await query.graph({ entity: "product", fields: ["id"], }); const productIds = products.map((product) => product.id); // Process in batches of 50 to avoid memory issues const batchSize = 25; for (let i = 0; i < productIds.length; i += batchSize) { const batch = productIds.slice(i, i + batchSize); await (0, refresh_product_review_stats_1.refreshProductReviewStatsWorkflow)(container).run({ input: { productIds: batch, }, }); logger.info(`Processed batch ${Math.floor(i / batchSize) + 1} of ${Math.ceil(productIds.length / batchSize)}`); } logger.info(`Successfully refreshed review stats for ${productIds.length} products`); } catch (error) { logger.error("Error during nightly product review stats refresh: " + error.message); throw error; } } exports.config = { name: "refresh-all-product-review-stats", schedule: "0 3 * * *", // Run at 3 AM every day }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC1hbGwtcHJvZHVjdC1yZXZpZXctc3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvam9icy9yZWZyZXNoLWFsbC1wcm9kdWN0LXJldmlldy1zdGF0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFRQSwrQ0E0Q0M7QUFuREQscURBQXNFO0FBRXRFLHNIQUF3SDtBQUV4SDs7R0FFRztBQUNZLEtBQUssVUFBVSw0QkFBNEIsQ0FDeEQsU0FBMEI7SUFFMUIsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpFLElBQUksQ0FBQztRQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUVoRSxzQkFBc0I7UUFDdEIsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDM0MsTUFBTSxFQUFFLFNBQVM7WUFDakIsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXpELGtEQUFrRDtRQUNsRCxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3RELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztZQUVqRCxNQUFNLElBQUEsZ0VBQWlDLEVBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUNyRCxLQUFLLEVBQUU7b0JBQ0wsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLElBQUksQ0FDVCxtQkFBbUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQzlELFVBQVUsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUM5QixFQUFFLENBQ0osQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUNULDJDQUEyQyxVQUFVLENBQUMsTUFBTSxXQUFXLENBQ3hFLENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxLQUFLLENBQ1YscURBQXFELEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FDdEUsQ0FBQztRQUNGLE1BQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUM7QUFFWSxRQUFBLE1BQU0sR0FBRztJQUNwQixJQUFJLEVBQUUsa0NBQWtDO0lBQ3hDLFFBQVEsRUFBRSxXQUFXLEVBQUUsd0JBQXdCO0NBQ2hELENBQUMifQ==