@lambdacurry/medusa-product-reviews
Version:
Product Reviews Plugin for Medusa
80 lines • 8.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.upsertProductReviewsWorkflow = void 0;
const utils_1 = require("@medusajs/framework/utils");
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
const core_flows_1 = require("@medusajs/medusa/core-flows");
const workflows_sdk_2 = require("@medusajs/workflows-sdk");
const create_product_reviews_1 = require("./create-product-reviews");
const update_product_reviews_1 = require("./update-product-reviews");
exports.upsertProductReviewsWorkflow = (0, workflows_sdk_2.createWorkflow)("upsert-product-reviews-workflow", (input) => {
const orderIds = (0, workflows_sdk_1.transform)({ input }, ({ input }) => {
return [...new Set(input.reviews.map((review) => review.order_id))];
});
const { data: orders } = (0, core_flows_1.useQueryGraphStep)({
entity: "order",
fields: ["*", "shipping_address.*", "customer.*", "items.*"],
filters: {
id: orderIds,
},
});
const inputs = (0, workflows_sdk_1.transform)({ orders, reviews: input.reviews }, (values) => {
const ordersMap = new Map(values.orders.map((order) => [order.id, order]));
const matchedReviews = values.reviews.map((review) => {
const { items, ...order } = ordersMap.get(review.order_id) || {};
const lineItem = items?.find((item) => item?.id === review.order_line_item_id);
if (!lineItem) {
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Order line item ${review.order_line_item_id} not found in order ${review.order_id}`);
}
return {
review,
lineItem: lineItem,
order,
};
});
const getNameFromOrder = (order) => {
return order.customer?.first_name
? `${order.customer.first_name} ${order.customer.last_name}`
: order.shipping_address?.first_name
? `${order.shipping_address.first_name} ${order.shipping_address.last_name}`
: undefined;
};
const create = matchedReviews
.filter((review) => !review.lineItem.product_review)
.map(({ review, lineItem, order }) => {
return {
email: order.email,
name: getNameFromOrder(order),
product_id: lineItem.product_id,
order_id: review.order_id,
order_line_item_id: review.order_line_item_id,
rating: review.rating,
content: review.content,
images: review.images,
};
});
const update = matchedReviews
.filter((review) => review.lineItem.product_review?.id)
.map(({ review, lineItem }) => {
return {
id: lineItem.product_review.id,
rating: review.rating,
content: review.content,
images: review.images,
};
});
return { create, update };
});
const createResult = (0, workflows_sdk_2.when)(inputs, ({ create }) => create.length > 0).then(() => create_product_reviews_1.createProductReviewsWorkflow.runAsStep({
input: { productReviews: inputs.create },
}));
const updateResult = (0, workflows_sdk_2.when)(inputs, ({ update }) => update.length > 0).then(() => update_product_reviews_1.updateProductReviewsWorkflow.runAsStep({
input: { productReviews: inputs.update },
}));
const results = (0, workflows_sdk_1.transform)({ createResult, updateResult }, ({ createResult, updateResult }) => ({
creates: createResult || [],
updates: updateResult || [],
}));
return new workflows_sdk_2.WorkflowResponse(results);
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LXByb2R1Y3QtcmV2aWV3cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvdXBzZXJ0LXByb2R1Y3QtcmV2aWV3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBd0Q7QUFDeEQscUVBQThEO0FBQzlELDREQUFnRTtBQUVoRSwyREFLaUM7QUFFakMscUVBQXdFO0FBQ3hFLHFFQUF3RTtBQVkzRCxRQUFBLDRCQUE0QixHQUFHLElBQUEsOEJBQWMsRUFDeEQsaUNBQWlDLEVBQ2pDLENBQUMsS0FBc0QsRUFBRSxFQUFFO0lBQ3pELE1BQU0sUUFBUSxHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ2xELE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFBLDhCQUFpQixFQUFDO1FBQ3pDLE1BQU0sRUFBRSxPQUFPO1FBQ2YsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxTQUFTLENBQUM7UUFDNUQsT0FBTyxFQUFFO1lBQ1AsRUFBRSxFQUFFLFFBQVE7U0FDYjtLQUNGLENBQWlDLENBQUM7SUFFbkMsTUFBTSxNQUFNLEdBQUcsSUFBQSx5QkFBUyxFQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUN0RSxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FDdkIsTUFBTSxDQUFDLE1BQU0sQ0FB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