@devx-commerce/plugin-product-reviews
Version:
Product Reviews Plugin for Medusa
47 lines • 5.23 kB
JavaScript
;
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