@lodashventure/medusa-sales-analytics 1.1.21 → 1.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/api/middlewares/add-sales-statistics.js +30 -5
- package/.medusa/server/api/middlewares.js +11 -1
- package/.medusa/server/modules/sales-analytics/index.d.ts +6 -0
- package/.medusa/server/modules/sales-analytics/index.js +13 -0
- package/.medusa/server/modules/sales-analytics/migrations/Migration20250308090000.d.ts +5 -0
- package/.medusa/server/modules/sales-analytics/migrations/Migration20250308090000.js +26 -0
- package/.medusa/server/modules/sales-analytics/service.d.ts +4 -0
- package/.medusa/server/modules/sales-analytics/service.js +7 -0
- package/package.json +1 -1
|
@@ -18,11 +18,14 @@ async function addSalesStatistics(req, res, next) {
|
|
|
18
18
|
if (!payload || payload.products.length === 0) {
|
|
19
19
|
return originalJson(data);
|
|
20
20
|
}
|
|
21
|
+
const variantIds = collectVariantIds(payload.products);
|
|
21
22
|
let salesByVariant = new Map();
|
|
22
23
|
try {
|
|
23
24
|
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
if (variantIds.length > 0) {
|
|
26
|
+
const orderItems = await fetchCompletedOrderItems(query, variantIds);
|
|
27
|
+
salesByVariant = groupSalesByVariant(orderItems);
|
|
28
|
+
}
|
|
26
29
|
}
|
|
27
30
|
catch (error) {
|
|
28
31
|
console.error("Error fetching sales statistics:", error);
|
|
@@ -57,7 +60,21 @@ function normalizeProductPayload(data) {
|
|
|
57
60
|
}
|
|
58
61
|
return null;
|
|
59
62
|
}
|
|
60
|
-
|
|
63
|
+
function collectVariantIds(products) {
|
|
64
|
+
const ids = new Set();
|
|
65
|
+
products.forEach((product) => {
|
|
66
|
+
if (!product?.variants) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
product.variants.forEach((variant) => {
|
|
70
|
+
if (variant?.id) {
|
|
71
|
+
ids.add(variant.id);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
return Array.from(ids);
|
|
76
|
+
}
|
|
77
|
+
async function fetchCompletedOrderItems(query, variantIds) {
|
|
61
78
|
const result = (await query.graph({
|
|
62
79
|
entity: "order_line_item",
|
|
63
80
|
fields: [
|
|
@@ -70,13 +87,21 @@ async function fetchCompletedOrderItems(query) {
|
|
|
70
87
|
"order.id",
|
|
71
88
|
"order.status",
|
|
72
89
|
],
|
|
90
|
+
...(variantIds.length
|
|
91
|
+
? {
|
|
92
|
+
filters: {
|
|
93
|
+
variant_id: variantIds,
|
|
94
|
+
},
|
|
95
|
+
}
|
|
96
|
+
: {}),
|
|
73
97
|
}));
|
|
74
98
|
const items = result?.data ?? [];
|
|
75
99
|
return items.filter((item) => {
|
|
76
100
|
const status = typeof item?.order?.status === "string"
|
|
77
101
|
? item.order.status.toLowerCase()
|
|
78
102
|
: "";
|
|
79
|
-
return COMPLETED_ORDER_STATUSES.has(status)
|
|
103
|
+
return (COMPLETED_ORDER_STATUSES.has(status) &&
|
|
104
|
+
(variantIds.length === 0 || (item?.variant_id && variantIds.includes(item.variant_id))));
|
|
80
105
|
});
|
|
81
106
|
}
|
|
82
107
|
function groupSalesByVariant(orderItems) {
|
|
@@ -165,4 +190,4 @@ function variantHasInventory(variant) {
|
|
|
165
190
|
}
|
|
166
191
|
return false;
|
|
167
192
|
}
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXNhbGVzLXN0YXRpc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzL2FkZC1zYWxlcy1zdGF0aXN0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0NBLGdEQXdDQztBQW5FRCxxREFBc0U7QUFrQnRFLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDdkMsV0FBVztJQUNYLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsU0FBUztJQUNULFdBQVc7SUFDWCxxQkFBcUI7Q0FDdEIsQ0FBQyxDQUFDO0FBRUksS0FBSyxVQUFVLGtCQUFrQixDQUN0QyxHQUFrQixFQUNsQixHQUFtQixFQUNuQixJQUF3QjtJQUV4QixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV2QyxHQUFXLENBQUMsSUFBSSxHQUFHLEtBQUssV0FBVyxJQUFTO1FBQzNDLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLENBQUM7WUFFRCxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkQsSUFBSSxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQWdDLENBQUM7WUFFN0QsSUFBSSxDQUFDO2dCQUNILE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzFC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
|
|
@@ -16,6 +16,16 @@ exports.default = (0, http_1.defineMiddlewares)({
|
|
|
16
16
|
add_sales_statistics_1.addSalesStatistics, // Add sales statistics
|
|
17
17
|
],
|
|
18
18
|
},
|
|
19
|
+
{
|
|
20
|
+
matcher: "/store/products-filter",
|
|
21
|
+
method: "GET",
|
|
22
|
+
middlewares: [
|
|
23
|
+
add_product_filters_1.captureFilterParams, // FIRST: Capture and remove custom filter params
|
|
24
|
+
add_stock_availability_1.addStockAvailability, // Add stock data
|
|
25
|
+
add_product_filters_1.applyProductFilters, // LAST: Apply filters using enriched data
|
|
26
|
+
add_sales_statistics_1.addSalesStatistics, // Add sales statistics
|
|
27
|
+
],
|
|
28
|
+
},
|
|
19
29
|
{
|
|
20
30
|
matcher: "/store/products/:id",
|
|
21
31
|
method: "GET",
|
|
@@ -33,4 +43,4 @@ exports.default = (0, http_1.defineMiddlewares)({
|
|
|
33
43
|
},
|
|
34
44
|
],
|
|
35
45
|
});
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQTZEO0FBQzdELDZFQUF3RTtBQUN4RSxpRkFBNEU7QUFDNUUsMkVBRzJDO0FBRTNDLGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ047WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsV0FBVyxFQUFFO2dCQUNYLHlDQUFtQixFQUFFLGlEQUFpRDtnQkFDdEUsNkNBQW9CLEVBQUUsaUJBQWlCO2dCQUN2Qyx5Q0FBbUIsRUFBRSwwQ0FBMEM7Z0JBQy9ELHlDQUFrQixFQUFFLHVCQUF1QjthQUM1QztTQUNGO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsV0FBVyxFQUFFO2dCQUNYLHlDQUFtQixFQUFFLGlEQUFpRDtnQkFDdEUsNkNBQW9CLEVBQUUsaUJBQWlCO2dCQUN2Qyx5Q0FBbUIsRUFBRSwwQ0FBMEM7Z0JBQy9ELHlDQUFrQixFQUFFLHVCQUF1QjthQUM1QztTQUNGO1FBQ0Q7WUFDRSxPQUFPLEVBQUUscUJBQXFCO1lBQzlCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsV0FBVyxFQUFFLENBQUMsNkNBQW9CLEVBQUUseUNBQWtCLENBQUM7U0FDeEQ7UUFDRDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsTUFBTSxFQUFFLEtBQUs7WUFDYixXQUFXLEVBQUUsQ0FBQyw2Q0FBb0IsRUFBRSx5Q0FBa0IsQ0FBQztTQUN4RDtRQUNEO1lBQ0UsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixNQUFNLEVBQUUsS0FBSztZQUNiLFdBQVcsRUFBRSxDQUFDLHlDQUFrQixDQUFDO1NBQ2xDO0tBQ0Y7Q0FDRixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import SalesAnalyticsModuleService from "./service";
|
|
2
|
+
export declare const SALES_ANALYTICS_MODULE = "salesAnalytics";
|
|
3
|
+
declare const _default: import("@medusajs/types").ModuleExports<typeof SalesAnalyticsModuleService> & {
|
|
4
|
+
linkable: Record<string, any>;
|
|
5
|
+
};
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SALES_ANALYTICS_MODULE = void 0;
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const service_1 = __importDefault(require("./service"));
|
|
9
|
+
exports.SALES_ANALYTICS_MODULE = "salesAnalytics";
|
|
10
|
+
exports.default = (0, utils_1.Module)(exports.SALES_ANALYTICS_MODULE, {
|
|
11
|
+
service: service_1.default,
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9zYWxlcy1hbmFseXRpY3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscURBQW1EO0FBQ25ELHdEQUFvRDtBQUV2QyxRQUFBLHNCQUFzQixHQUFHLGdCQUFnQixDQUFDO0FBRXZELGtCQUFlLElBQUEsY0FBTSxFQUFDLDhCQUFzQixFQUFFO0lBQzVDLE9BQU8sRUFBRSxpQkFBMkI7Q0FDckMsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20250308090000 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
const COMPLETED_FAMILY_STATUSES = [
|
|
6
|
+
"completed",
|
|
7
|
+
"partially_returned",
|
|
8
|
+
"partially_shipped",
|
|
9
|
+
"shipped",
|
|
10
|
+
"fulfilled",
|
|
11
|
+
"partially_fulfilled",
|
|
12
|
+
];
|
|
13
|
+
class Migration20250308090000 extends migrations_1.Migration {
|
|
14
|
+
async up() {
|
|
15
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_order_line_item_variant_id" ON "order_line_item" (variant_id);`);
|
|
16
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_order_line_item_order_id" ON "order_line_item" (order_id);`);
|
|
17
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_order_status_completed_family" ON "order" (status) WHERE status IN (${COMPLETED_FAMILY_STATUSES.map((status) => `'${status}'`).join(", ")});`);
|
|
18
|
+
}
|
|
19
|
+
async down() {
|
|
20
|
+
this.addSql(`DROP INDEX IF EXISTS "IDX_order_line_item_variant_id";`);
|
|
21
|
+
this.addSql(`DROP INDEX IF EXISTS "IDX_order_line_item_order_id";`);
|
|
22
|
+
this.addSql(`DROP INDEX IF EXISTS "IDX_order_status_completed_family";`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.Migration20250308090000 = Migration20250308090000;
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTAzMDgwOTAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9zYWxlcy1hbmFseXRpY3MvbWlncmF0aW9ucy9NaWdyYXRpb24yMDI1MDMwODA5MDAwMC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBcUU7QUFFckUsTUFBTSx5QkFBeUIsR0FBRztJQUNoQyxXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQixTQUFTO0lBQ1QsV0FBVztJQUNYLHFCQUFxQjtDQUN0QixDQUFDO0FBRUYsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUMzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQ1QsZ0dBQWdHLENBQ2pHLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUNULDRGQUE0RixDQUM3RixDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FDVCx1R0FBdUcseUJBQXlCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQy9LLENBQUM7SUFDSixDQUFDO0lBRVEsS0FBSyxDQUFDLElBQUk7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxNQUFNLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsTUFBTSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNGO0FBbEJELDBEQWtCQyJ9
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
declare const SalesAnalyticsModuleService_base: import("@medusajs/framework/utils").MedusaServiceReturnType<import("@medusajs/framework/utils").ModelConfigurationsToConfigTemplate<{}>>;
|
|
2
|
+
declare class SalesAnalyticsModuleService extends SalesAnalyticsModuleService_base {
|
|
3
|
+
}
|
|
4
|
+
export default SalesAnalyticsModuleService;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
class SalesAnalyticsModuleService extends (0, utils_1.MedusaService)({}) {
|
|
5
|
+
}
|
|
6
|
+
exports.default = SalesAnalyticsModuleService;
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3NhbGVzLWFuYWx5dGljcy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscURBQTBEO0FBRTFELE1BQU0sMkJBQTRCLFNBQVEsSUFBQSxxQkFBYSxFQUFDLEVBQUUsQ0FBQztDQUFHO0FBRTlELGtCQUFlLDJCQUEyQixDQUFDIn0=
|