@devx-commerce/plugin-product-reviews
Version:
Product Reviews Plugin for Medusa
70 lines • 5.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.verifyPurchaseHistoryStep = void 0;
const utils_1 = require("@medusajs/framework/utils");
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
exports.verifyPurchaseHistoryStep = (0, workflows_sdk_1.createStep)("verify-purchase-history", async (data, { container }) => {
const query = container.resolve("query");
// If order_id and order_item_id are provided, verify them first
if (data.order_id && data.order_item_id) {
const { data: specificOrder } = await query.graph({
entity: "order",
fields: ["id", "status", "items.id", "items.product_id", "created_at"],
filters: {
id: data.order_id,
customer_id: data.customer_id,
status: utils_1.OrderStatus.COMPLETED,
items: {
id: data.order_item_id,
product_id: data.product_id,
},
},
});
if (specificOrder.length > 0) {
return new workflows_sdk_1.StepResponse({
isVerified: true,
order_id: specificOrder[0].id,
order_item_id: data.order_item_id,
});
}
}
// If no specific order is found or provided, find the most relevant order
const { data: orders } = await query.graph({
entity: "order",
fields: ["id", "status", "items.id", "items.product_id", "created_at"],
filters: {
customer_id: data.customer_id,
status: utils_1.OrderStatus.COMPLETED,
items: { product_id: data.product_id },
},
pagination: {
take: 1,
skip: 0,
order: { created_at: "DESC" },
},
});
if (orders.length === 0) {
return new workflows_sdk_1.StepResponse({
isVerified: false,
order_id: null,
order_item_id: null,
});
}
// Find the most relevant order and item
const mostRelevantOrder = orders[0]; // Most recent order
const relevantItem = mostRelevantOrder?.items?.find((item) => item.product_id === data.product_id);
// Only verify if we actually found a matching order item
if (!relevantItem) {
return new workflows_sdk_1.StepResponse({
isVerified: false,
order_id: null,
order_item_id: null,
});
}
return new workflows_sdk_1.StepResponse({
isVerified: true,
order_id: mostRelevantOrder.id,
order_item_id: relevantItem.id,
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LXB1cmNoYXNlLWhpc3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3Byb2R1Y3QtcmV2aWV3cy9zdGVwcy92ZXJpZnktcHVyY2hhc2UtaGlzdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBd0Q7QUFDeEQscUVBQTZFO0FBRWhFLFFBQUEseUJBQXlCLEdBQUcsSUFBQSwwQkFBVSxFQUNqRCx5QkFBeUIsRUFDekIsS0FBSyxFQUNILElBS0MsRUFDRCxFQUFFLFNBQVMsRUFBRSxFQUNiLEVBQUU7SUFDRixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXpDLGdFQUFnRTtJQUNoRSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ2hELE1BQU0sRUFBRSxPQUFPO1lBQ2YsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxDQUFDO1lBQ3RFLE9BQU8sRUFBRTtnQkFDUCxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDN0IsTUFBTSxFQUFFLG1CQUFXLENBQUMsU0FBUztnQkFDN0IsS0FBSyxFQUFFO29CQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYTtvQkFDdEIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2lCQUM1QjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSw0QkFBWSxDQUFDO2dCQUN0QixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM3QixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7YUFDbEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDekMsTUFBTSxFQUFFLE9BQU87UUFDZixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxZQUFZLENBQUM7UUFDdEUsT0FBTyxFQUFFO1lBQ1AsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLE1BQU0sRUFBRSxtQkFBVyxDQUFDLFNBQVM7WUFDN0IsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7U0FDdkM7UUFDRCxVQUFVLEVBQUU7WUFDVixJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksRUFBRSxDQUFDO1lBQ1AsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTtTQUM5QjtLQUNGLENBQUMsQ0FBQztJQUVILElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksNEJBQVksQ0FBQztZQUN0QixVQUFVLEVBQUUsS0FBSztZQUNqQixRQUFRLEVBQUUsSUFBSTtZQUNkLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7SUFDekQsTUFBTSxZQUFZLEdBQUcsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FDakQsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FDOUMsQ0FBQztJQUVGLHlEQUF5RDtJQUN6RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsT0FBTyxJQUFJLDRCQUFZLENBQUM7WUFDdEIsVUFBVSxFQUFFLEtBQUs7WUFDakIsUUFBUSxFQUFFLElBQUk7WUFDZCxhQUFhLEVBQUUsSUFBSTtTQUNwQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQUM7UUFDdEIsVUFBVSxFQUFFLElBQUk7UUFDaEIsUUFBUSxFQUFFLGlCQUFpQixDQUFDLEVBQUU7UUFDOUIsYUFBYSxFQUFFLFlBQVksQ0FBQyxFQUFFO0tBQy9CLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FDRixDQUFDIn0=