UNPKG

@rsc-labs/medusa-store-analytics-v2

Version:
107 lines 9.06 kB
"use strict"; /* * Copyright 2024 RSC-Labs, https://rsoftcon.com/ * * MIT License * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.MarketingAnalyticsService = void 0; class MarketingAnalyticsService { constructor({ __pg_connection__ }) { this.pgConnection = __pg_connection__; this.TOP_LIMIT = 5; } async getTopDiscountsByCount(orderStatuses, from, to) { const orderStatusesAsStrings = Object.values(orderStatuses); if (orderStatusesAsStrings.length) { if (from && to) { const topDiscounts = await this.pgConnection('order') .join('order_cart', 'order.id', 'order_cart.order_id') .join('cart', 'order_cart.cart_id', 'cart.id') .join('cart_promotion', 'cart.id', 'cart_promotion.cart_id') .join('promotion', 'cart_promotion.promotion_id', 'promotion.id') .select('promotion.code AS code', 'promotion.id AS discount_id') .count('promotion.id AS sum') .where('order.created_at', '>=', from) .whereIn('order.status', orderStatusesAsStrings) .groupBy(['promotion.code', 'promotion.id']) .orderBy('sum', 'DESC') .limit(this.TOP_LIMIT); return { dateRangeFrom: from.getTime(), dateRangeTo: to.getTime(), dateRangeFromCompareTo: undefined, dateRangeToCompareTo: undefined, current: topDiscounts.map(result => ({ sum: result.sum.toString(), discountCode: result.code.toString(), discountId: result.discount_id.toString() })), previous: [] }; } let startQueryFrom; if (!from) { if (from) { startQueryFrom = from; } else { const lastOrder = await this.pgConnection('order') .select('created_at') .whereIn('status', orderStatusesAsStrings) .orderBy('created_at', 'ASC') .limit(1) .then(result => result[0]); if (lastOrder) { startQueryFrom = lastOrder.created_at; } } } else { startQueryFrom = from; } if (startQueryFrom) { const topDiscounts = await this.pgConnection('order') .join('order_cart', 'order.id', 'order_cart.order_id') .join('cart', 'order_cart.cart_id', 'cart.id') .join('cart_promotion', 'cart.id', 'cart_promotion.cart_id') .join('promotion', 'cart_promotion.promotion_id', 'promotion.id') .select('promotion.code AS code', 'promotion.id AS discount_id') .count('promotion.id AS sum') .where('order.created_at', '>=', startQueryFrom) .whereIn('order.status', orderStatusesAsStrings) .groupBy(['promotion.code', 'promotion.id']) .orderBy('sum', 'DESC') .limit(this.TOP_LIMIT); return { dateRangeFrom: startQueryFrom.getTime(), dateRangeTo: to ? to.getTime() : new Date(Date.now()).getTime(), dateRangeFromCompareTo: undefined, dateRangeToCompareTo: undefined, current: topDiscounts.map(result => ({ sum: result.sum.toString(), discountCode: result.code.toString(), discountId: result.discount_id.toString() })), previous: [] }; } } return { dateRangeFrom: undefined, dateRangeTo: undefined, dateRangeFromCompareTo: undefined, dateRangeToCompareTo: undefined, current: [], previous: [] }; } } exports.MarketingAnalyticsService = MarketingAnalyticsService; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2V0aW5nQW5hbHl0aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvc3RvcmUtYW5hbHl0aWNzL3NlcnZpY2VzL21hcmtldGluZ0FuYWx5dGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7R0FVRzs7O0FBd0JILE1BQWEseUJBQXlCO0lBTXBDLFlBQVksRUFBRSxpQkFBaUIsRUFBd0I7UUFDckQsSUFBSSxDQUFDLFlBQVksR0FBRyxpQkFBaUIsQ0FBQTtRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLGFBQTRCLEVBQUUsSUFBVyxFQUFFLEVBQVM7UUFDL0UsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVELElBQUksc0JBQXNCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEMsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztxQkFDbEQsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUscUJBQXFCLENBQUM7cUJBQ3JELElBQUksQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxDQUFDO3FCQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixDQUFDO3FCQUMzRCxJQUFJLENBQUMsV0FBVyxFQUFFLDZCQUE2QixFQUFFLGNBQWMsQ0FBQztxQkFDaEUsTUFBTSxDQUNMLHdCQUF3QixFQUN4Qiw2QkFBNkIsQ0FDOUI7cUJBQ0EsS0FBSyxDQUFDLHFCQUFxQixDQUFDO3FCQUM1QixLQUFLLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztxQkFDckMsT0FBTyxDQUFDLGNBQWMsRUFBRSxzQkFBc0IsQ0FBQztxQkFDL0MsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUM7cUJBQzNDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO3FCQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUV6QixPQUFPO29CQUNMLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUM3QixXQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRTtvQkFDekIsc0JBQXNCLEVBQUUsU0FBUztvQkFDakMsb0JBQW9CLEVBQUUsU0FBUztvQkFDL0IsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUNsQzt3QkFDRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7d0JBQzFCLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTt3QkFDcEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO3FCQUMxQyxDQUNGLENBQUM7b0JBQ0YsUUFBUSxFQUFFLEVBQUU7aUJBQ2IsQ0FBQTtZQUNILENBQUM7WUFFRCxJQUFJLGNBQWdDLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1QsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFDeEIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7eUJBQy9DLE1BQU0sQ0FBQyxZQUFZLENBQUM7eUJBQ3BCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENBQUM7eUJBQ3pDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDO3lCQUM1QixLQUFLLENBQUMsQ0FBQyxDQUFDO3lCQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUU3QixJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUNaLGNBQWMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO29CQUMxQyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sY0FBYyxHQUFHLElBQUksQ0FBQztZQUN4QixDQUFDO1lBRUQsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztxQkFDbEQsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUscUJBQXFCLENBQUM7cUJBQ3JELElBQUksQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxDQUFDO3FCQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixDQUFDO3FCQUMzRCxJQUFJLENBQUMsV0FBVyxFQUFFLDZCQUE2QixFQUFFLGNBQWMsQ0FBQztxQkFDaEUsTUFBTSxDQUNMLHdCQUF3QixFQUN4Qiw2QkFBNkIsQ0FDOUI7cUJBQ0EsS0FBSyxDQUFDLHFCQUFxQixDQUFDO3FCQUM1QixLQUFLLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLGNBQWMsQ0FBQztxQkFDL0MsT0FBTyxDQUFDLGNBQWMsRUFBRSxzQkFBc0IsQ0FBQztxQkFDL0MsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUM7cUJBQzNDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO3FCQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUV6QixPQUFPO29CQUNMLGFBQWEsRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFO29CQUN2QyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtvQkFDL0Qsc0JBQXNCLEVBQUUsU0FBUztvQkFDakMsb0JBQW9CLEVBQUUsU0FBUztvQkFDL0IsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUNsQzt3QkFDRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7d0JBQzFCLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTt3QkFDcEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO3FCQUMxQyxDQUNGLENBQUM7b0JBQ0YsUUFBUSxFQUFFLEVBQUU7aUJBQ2IsQ0FBQTtZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTztZQUNMLGFBQWEsRUFBRSxTQUFTO1lBQ3hCLFdBQVcsRUFBRSxTQUFTO1lBQ3RCLHNCQUFzQixFQUFFLFNBQVM7WUFDakMsb0JBQW9CLEVBQUUsU0FBUztZQUMvQixPQUFPLEVBQUUsRUFBRTtZQUNYLFFBQVEsRUFBRSxFQUFFO1NBQ2IsQ0FBQTtJQUNILENBQUM7Q0FDRjtBQTlHRCw4REE4R0MifQ==