UNPKG

@devx-commerce/plugin-product-reviews

Version:
47 lines 5.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateReviewCsvHeadersStep = exports.validateReviewCsvHeadersStepId = void 0; const utils_1 = require("@medusajs/framework/utils"); const workflows_sdk_1 = require("@medusajs/workflows-sdk"); exports.validateReviewCsvHeadersStepId = "validate-review-csv-headers-step"; exports.validateReviewCsvHeadersStep = (0, workflows_sdk_1.createStep)(exports.validateReviewCsvHeadersStepId, async (input) => { const { reviews } = input; if (!reviews || !Array.isArray(reviews) || reviews.length === 0) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "No reviews found in the CSV file"); } // Required headers for a valid product review const requiredHeaders = ["product_id", "rating"]; // At least one of these headers must exist const identificationHeaders = ["email", "phone", "customer_id"]; // if it have extra headers that should be one from below given not outside of it const optionalHeaders = [ "order_id", "order_item_id", "name", "title", "description", "image_medias", "video_medias", ]; // Check the first review to validate headers (only checking headers, not content) const firstReview = reviews[0]; const availableHeaders = Object.keys(firstReview); // Check required headers const missingRequiredHeaders = requiredHeaders.filter((header) => !availableHeaders.includes(header)); if (missingRequiredHeaders.length > 0) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `CSV is missing required headers: ${missingRequiredHeaders.join(", ")}`); } // Check that at least one identification header exists const hasIdentificationHeader = identificationHeaders.some((header) => availableHeaders.includes(header)); if (!hasIdentificationHeader) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `CSV must include at least one of these headers: ${identificationHeaders.join(", ")}`); } const extraHeaders = availableHeaders.filter((header) => !requiredHeaders.includes(header) && !identificationHeaders.includes(header) && !optionalHeaders.includes(header)); if (extraHeaders.length > 0) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `CSV contains extra headers that are not allowed: ${extraHeaders.join(", ")}`); } return new workflows_sdk_1.StepResponse({ isValid: true }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtcmV2aWV3LWNzdi1oZWFkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9wcm9kdWN0LXJldmlld3Mvc3RlcHMvdmFsaWRhdGUtcmV2aWV3LWNzdi1oZWFkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF3RDtBQUN4RCwyREFBbUU7QUFVdEQsUUFBQSw4QkFBOEIsR0FDekMsa0NBQWtDLENBQUM7QUFFeEIsUUFBQSw0QkFBNEIsR0FBRyxJQUFBLDBCQUFVLEVBQ3BELHNDQUE4QixFQUM5QixLQUFLLEVBQUUsS0FBb0MsRUFBRSxFQUFFO0lBQzdDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFMUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoRSxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixrQ0FBa0MsQ0FDbkMsQ0FBQztJQUNKLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFakQsMkNBQTJDO0lBQzNDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRWhFLGlGQUFpRjtJQUNqRixNQUFNLGVBQWUsR0FBRztRQUN0QixVQUFVO1FBQ1YsZUFBZTtRQUNmLE1BQU07UUFDTixPQUFPO1FBQ1AsYUFBYTtRQUNiLGNBQWM7UUFDZCxjQUFjO0tBQ2YsQ0FBQztJQUVGLGtGQUFrRjtJQUNsRixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRWxELHlCQUF5QjtJQUN6QixNQUFNLHNCQUFzQixHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQ25ELENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDL0MsQ0FBQztJQUVGLElBQUksc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG9DQUFvQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDeEUsQ0FBQztJQUNKLENBQUM7SUFFRCx1REFBdUQ7SUFDdkQsTUFBTSx1QkFBdUIsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNwRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQ2xDLENBQUM7SUFFRixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixtREFBbUQscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3RGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUMxQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUNqQyxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDdkMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUNwQyxDQUFDO0lBRUYsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG9EQUFvRCxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQzlFLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQ0YsQ0FBQyJ9