@unchainedshop/api 4.0.0-rc.10 → 4.0.0-rc.11
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/lib/mcp/index.d.ts.map +1 -1
- package/lib/mcp/index.js +6 -0
- package/lib/mcp/index.js.map +1 -1
- package/lib/mcp/tools/delivery/createDeliveryProviderHandler.d.ts +44 -0
- package/lib/mcp/tools/delivery/createDeliveryProviderHandler.d.ts.map +1 -0
- package/lib/mcp/tools/delivery/createDeliveryProviderHandler.js +50 -0
- package/lib/mcp/tools/delivery/createDeliveryProviderHandler.js.map +1 -0
- package/lib/mcp/tools/delivery/deliveryInterfacesHandler.d.ts +20 -0
- package/lib/mcp/tools/delivery/deliveryInterfacesHandler.d.ts.map +1 -0
- package/lib/mcp/tools/delivery/deliveryInterfacesHandler.js +45 -0
- package/lib/mcp/tools/delivery/deliveryInterfacesHandler.js.map +1 -0
- package/lib/mcp/tools/delivery/deliveryProvider.d.ts +20 -0
- package/lib/mcp/tools/delivery/deliveryProvider.d.ts.map +1 -0
- package/lib/mcp/tools/delivery/deliveryProvider.js +43 -0
- package/lib/mcp/tools/delivery/deliveryProvider.js.map +1 -0
- package/lib/mcp/tools/delivery/deliveryProvidersCountHandler.d.ts +20 -0
- package/lib/mcp/tools/delivery/deliveryProvidersCountHandler.d.ts.map +1 -0
- package/lib/mcp/tools/delivery/deliveryProvidersCountHandler.js +36 -0
- package/lib/mcp/tools/delivery/deliveryProvidersCountHandler.js.map +1 -0
- package/lib/mcp/tools/delivery/deliveryProvidersListHandler.d.ts +24 -0
- package/lib/mcp/tools/delivery/deliveryProvidersListHandler.d.ts.map +1 -0
- package/lib/mcp/tools/delivery/deliveryProvidersListHandler.js +44 -0
- package/lib/mcp/tools/delivery/deliveryProvidersListHandler.js.map +1 -0
- package/lib/mcp/tools/delivery/index.d.ts +4 -0
- package/lib/mcp/tools/delivery/index.d.ts.map +1 -0
- package/lib/mcp/tools/delivery/index.js +17 -0
- package/lib/mcp/tools/delivery/index.js.map +1 -0
- package/lib/mcp/tools/delivery/removeDeliveryProviderHandler.d.ts +20 -0
- package/lib/mcp/tools/delivery/removeDeliveryProviderHandler.d.ts.map +1 -0
- package/lib/mcp/tools/delivery/removeDeliveryProviderHandler.js +37 -0
- package/lib/mcp/tools/delivery/removeDeliveryProviderHandler.js.map +1 -0
- package/lib/mcp/tools/delivery/updateDeliveryProviderHandler.d.ts +96 -0
- package/lib/mcp/tools/delivery/updateDeliveryProviderHandler.d.ts.map +1 -0
- package/lib/mcp/tools/delivery/updateDeliveryProviderHandler.js +54 -0
- package/lib/mcp/tools/delivery/updateDeliveryProviderHandler.js.map +1 -0
- package/lib/mcp/tools/order/getMonthlySalesBreakdownHandler.d.ts +36 -0
- package/lib/mcp/tools/order/getMonthlySalesBreakdownHandler.d.ts.map +1 -0
- package/lib/mcp/tools/order/getMonthlySalesBreakdownHandler.js +89 -0
- package/lib/mcp/tools/order/getMonthlySalesBreakdownHandler.js.map +1 -0
- package/lib/mcp/tools/order/getSalesSummaryHandler.d.ts +40 -0
- package/lib/mcp/tools/order/getSalesSummaryHandler.d.ts.map +1 -0
- package/lib/mcp/tools/order/getSalesSummaryHandler.js +90 -0
- package/lib/mcp/tools/order/getSalesSummaryHandler.js.map +1 -0
- package/lib/mcp/tools/order/getTopCustomersHandler.d.ts +52 -0
- package/lib/mcp/tools/order/getTopCustomersHandler.d.ts.map +1 -0
- package/lib/mcp/tools/order/getTopCustomersHandler.js +111 -0
- package/lib/mcp/tools/order/getTopCustomersHandler.js.map +1 -0
- package/lib/mcp/tools/order/getTopSellingProductsHandler.d.ts +28 -0
- package/lib/mcp/tools/order/getTopSellingProductsHandler.d.ts.map +1 -0
- package/lib/mcp/tools/order/getTopSellingProductsHandler.js +99 -0
- package/lib/mcp/tools/order/getTopSellingProductsHandler.js.map +1 -0
- package/lib/mcp/tools/order/index.d.ts +4 -0
- package/lib/mcp/tools/order/index.d.ts.map +1 -0
- package/lib/mcp/tools/order/index.js +13 -0
- package/lib/mcp/tools/order/index.js.map +1 -0
- package/lib/mcp/tools/order/ordersListHandler.d.ts +108 -0
- package/lib/mcp/tools/order/ordersListHandler.d.ts.map +1 -0
- package/lib/mcp/tools/order/ordersListHandler.js +91 -0
- package/lib/mcp/tools/order/ordersListHandler.js.map +1 -0
- package/lib/mcp/tools/payment/createPaymentProviderHandler.d.ts.map +1 -1
- package/lib/mcp/tools/payment/createPaymentProviderHandler.js +5 -2
- package/lib/mcp/tools/payment/createPaymentProviderHandler.js.map +1 -1
- package/lib/mcp/tools/payment/index.js +1 -1
- package/lib/mcp/tools/payment/index.js.map +1 -1
- package/lib/mcp/tools/payment/paymentInterfacesHandler.d.ts +2 -2
- package/lib/mcp/tools/payment/paymentInterfacesHandler.d.ts.map +1 -1
- package/lib/mcp/tools/payment/paymentInterfacesHandler.js +7 -5
- package/lib/mcp/tools/payment/paymentInterfacesHandler.js.map +1 -1
- package/lib/mcp/tools/payment/paymentProviderByIdHandler.js +1 -1
- package/lib/mcp/tools/payment/paymentProviderByIdHandler.js.map +1 -1
- package/lib/mcp/tools/payment/paymentProvidersListHandler.d.ts +4 -0
- package/lib/mcp/tools/payment/paymentProvidersListHandler.d.ts.map +1 -1
- package/lib/mcp/tools/payment/paymentProvidersListHandler.js +12 -3
- package/lib/mcp/tools/payment/paymentProvidersListHandler.js.map +1 -1
- package/lib/mcp/tools/payment/removePaymentProviderHandler.d.ts.map +1 -1
- package/lib/mcp/tools/payment/removePaymentProviderHandler.js +5 -4
- package/lib/mcp/tools/payment/removePaymentProviderHandler.js.map +1 -1
- package/lib/mcp/tools/payment/updatePaymentProviderHandler.d.ts +66 -10
- package/lib/mcp/tools/payment/updatePaymentProviderHandler.d.ts.map +1 -1
- package/lib/mcp/tools/payment/updatePaymentProviderHandler.js +18 -3
- package/lib/mcp/tools/payment/updatePaymentProviderHandler.js.map +1 -1
- package/lib/mcp/tools/warehousing/createWarehousingProviderHandler.d.ts +44 -0
- package/lib/mcp/tools/warehousing/createWarehousingProviderHandler.d.ts.map +1 -0
- package/lib/mcp/tools/warehousing/createWarehousingProviderHandler.js +48 -0
- package/lib/mcp/tools/warehousing/createWarehousingProviderHandler.js.map +1 -0
- package/lib/mcp/tools/warehousing/index.d.ts +4 -0
- package/lib/mcp/tools/warehousing/index.d.ts.map +1 -0
- package/lib/mcp/tools/warehousing/index.js +17 -0
- package/lib/mcp/tools/warehousing/index.js.map +1 -0
- package/lib/mcp/tools/warehousing/removeWarehousingProviderHandler.d.ts +20 -0
- package/lib/mcp/tools/warehousing/removeWarehousingProviderHandler.d.ts.map +1 -0
- package/lib/mcp/tools/warehousing/removeWarehousingProviderHandler.js +39 -0
- package/lib/mcp/tools/warehousing/removeWarehousingProviderHandler.js.map +1 -0
- package/lib/mcp/tools/warehousing/updateWarehousingProviderHandler.d.ts +96 -0
- package/lib/mcp/tools/warehousing/updateWarehousingProviderHandler.d.ts.map +1 -0
- package/lib/mcp/tools/warehousing/updateWarehousingProviderHandler.js +58 -0
- package/lib/mcp/tools/warehousing/updateWarehousingProviderHandler.js.map +1 -0
- package/lib/mcp/tools/warehousing/warehousingInterfacesHandler.d.ts +20 -0
- package/lib/mcp/tools/warehousing/warehousingInterfacesHandler.d.ts.map +1 -0
- package/lib/mcp/tools/warehousing/warehousingInterfacesHandler.js +45 -0
- package/lib/mcp/tools/warehousing/warehousingInterfacesHandler.js.map +1 -0
- package/lib/mcp/tools/warehousing/warehousingProviderHandler.d.ts +20 -0
- package/lib/mcp/tools/warehousing/warehousingProviderHandler.d.ts.map +1 -0
- package/lib/mcp/tools/warehousing/warehousingProviderHandler.js +45 -0
- package/lib/mcp/tools/warehousing/warehousingProviderHandler.js.map +1 -0
- package/lib/mcp/tools/warehousing/warehousingProvidersCountHandler.d.ts +20 -0
- package/lib/mcp/tools/warehousing/warehousingProvidersCountHandler.d.ts.map +1 -0
- package/lib/mcp/tools/warehousing/warehousingProvidersCountHandler.js +36 -0
- package/lib/mcp/tools/warehousing/warehousingProvidersCountHandler.js.map +1 -0
- package/lib/mcp/tools/warehousing/warehousingProvidersListHandler.d.ts +24 -0
- package/lib/mcp/tools/warehousing/warehousingProvidersListHandler.d.ts.map +1 -0
- package/lib/mcp/tools/warehousing/warehousingProvidersListHandler.js +44 -0
- package/lib/mcp/tools/warehousing/warehousingProvidersListHandler.js.map +1 -0
- package/lib/mcp/utils/orderFilters.d.ts +22 -0
- package/lib/mcp/utils/orderFilters.d.ts.map +1 -0
- package/lib/mcp/utils/orderFilters.js +34 -0
- package/lib/mcp/utils/orderFilters.js.map +1 -0
- package/lib/mcp/utils/sharedSchemas.d.ts +11 -0
- package/lib/mcp/utils/sharedSchemas.d.ts.map +1 -0
- package/lib/mcp/utils/sharedSchemas.js +11 -0
- package/lib/mcp/utils/sharedSchemas.js.map +1 -0
- package/lib/resolvers/queries/orders/orders.d.ts.map +1 -1
- package/lib/resolvers/queries/orders/orders.js +33 -4
- package/lib/resolvers/queries/orders/orders.js.map +1 -1
- package/lib/resolvers/queries/orders/ordersCount.d.ts.map +1 -1
- package/lib/resolvers/queries/orders/ordersCount.js +29 -1
- package/lib/resolvers/queries/orders/ordersCount.js.map +1 -1
- package/lib/schema/query.d.ts.map +1 -1
- package/lib/schema/query.js +11 -1
- package/lib/schema/query.js.map +1 -1
- package/package.json +1 -1
- package/src/mcp/index.ts +6 -1
- package/src/mcp/tools/delivery/createDeliveryProviderHandler.ts +62 -0
- package/src/mcp/tools/delivery/deliveryInterfacesHandler.ts +56 -0
- package/src/mcp/tools/delivery/deliveryProvider.ts +51 -0
- package/src/mcp/tools/delivery/deliveryProvidersCountHandler.ts +46 -0
- package/src/mcp/tools/delivery/deliveryProvidersListHandler.ts +54 -0
- package/src/mcp/tools/delivery/index.ts +74 -0
- package/src/mcp/tools/delivery/removeDeliveryProviderHandler.ts +45 -0
- package/src/mcp/tools/delivery/updateDeliveryProviderHandler.ts +68 -0
- package/src/mcp/tools/order/getMonthlySalesBreakdownHandler.ts +106 -0
- package/src/mcp/tools/order/getSalesSummaryHandler.ts +103 -0
- package/src/mcp/tools/order/getTopCustomersHandler.ts +123 -0
- package/src/mcp/tools/order/getTopSellingProductsHandler.ts +112 -0
- package/src/mcp/tools/order/index.ts +50 -0
- package/src/mcp/tools/order/ordersListHandler.ts +119 -0
- package/src/mcp/tools/payment/createPaymentProviderHandler.ts +7 -2
- package/src/mcp/tools/payment/index.ts +1 -1
- package/src/mcp/tools/payment/paymentInterfacesHandler.ts +13 -10
- package/src/mcp/tools/payment/paymentProviderByIdHandler.ts +1 -1
- package/src/mcp/tools/payment/paymentProvidersListHandler.ts +14 -4
- package/src/mcp/tools/payment/removePaymentProviderHandler.ts +6 -8
- package/src/mcp/tools/payment/updatePaymentProviderHandler.ts +23 -4
- package/src/mcp/tools/warehousing/createWarehousingProviderHandler.ts +61 -0
- package/src/mcp/tools/warehousing/index.ts +81 -0
- package/src/mcp/tools/warehousing/removeWarehousingProviderHandler.ts +46 -0
- package/src/mcp/tools/warehousing/updateWarehousingProviderHandler.ts +72 -0
- package/src/mcp/tools/warehousing/warehousingInterfacesHandler.ts +58 -0
- package/src/mcp/tools/warehousing/warehousingProviderHandler.ts +55 -0
- package/src/mcp/tools/warehousing/warehousingProvidersCountHandler.ts +46 -0
- package/src/mcp/tools/warehousing/warehousingProvidersListHandler.ts +55 -0
- package/src/mcp/utils/orderFilters.ts +52 -0
- package/src/mcp/utils/sharedSchemas.ts +12 -0
- package/src/resolvers/queries/orders/orders.ts +46 -5
- package/src/resolvers/queries/orders/ordersCount.ts +42 -1
- package/src/schema/query.ts +11 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Context } from '../../../context.js';
|
|
3
|
+
import { log } from '@unchainedshop/logger';
|
|
4
|
+
|
|
5
|
+
export const WarehousingProviderByIdSchema = {
|
|
6
|
+
warehousingProviderId: z.string().min(1).describe('ID of the warehousing provider'),
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export const WarehousingProviderByIdZodSchema = z.object(WarehousingProviderByIdSchema);
|
|
10
|
+
export type WarehousingProviderByIdParams = z.infer<typeof WarehousingProviderByIdZodSchema>;
|
|
11
|
+
|
|
12
|
+
export async function warehousingProviderHandler(
|
|
13
|
+
context: Context,
|
|
14
|
+
params: WarehousingProviderByIdParams,
|
|
15
|
+
) {
|
|
16
|
+
const { modules, userId } = context;
|
|
17
|
+
const { warehousingProviderId } = params;
|
|
18
|
+
|
|
19
|
+
try {
|
|
20
|
+
log('handler warehousingProviderHandler', { userId, warehousingProviderId });
|
|
21
|
+
|
|
22
|
+
const provider = await modules.warehousing.findProvider({
|
|
23
|
+
warehousingProviderId,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
if (!provider) {
|
|
27
|
+
return {
|
|
28
|
+
content: [
|
|
29
|
+
{
|
|
30
|
+
type: 'text' as const,
|
|
31
|
+
text: `Warehousing provider not found for ID: ${warehousingProviderId}`,
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
content: [
|
|
39
|
+
{
|
|
40
|
+
type: 'text' as const,
|
|
41
|
+
text: JSON.stringify({ provider }),
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
} catch (error) {
|
|
46
|
+
return {
|
|
47
|
+
content: [
|
|
48
|
+
{
|
|
49
|
+
type: 'text' as const,
|
|
50
|
+
text: `Error fetching warehousing provider: ${(error as Error).message}`,
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Context } from '../../../context.js';
|
|
3
|
+
import { log } from '@unchainedshop/logger';
|
|
4
|
+
|
|
5
|
+
const WarehousingProviderTypeEnum = z
|
|
6
|
+
.enum(['PHYSICAL', 'VIRTUAL'])
|
|
7
|
+
.describe('Warehousing provider type');
|
|
8
|
+
|
|
9
|
+
export const WarehousingProvidersCountSchema = {
|
|
10
|
+
type: WarehousingProviderTypeEnum.optional(),
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const WarehousingProvidersCountZodSchema = z.object(WarehousingProvidersCountSchema);
|
|
14
|
+
export type WarehousingProvidersCountParams = z.infer<typeof WarehousingProvidersCountZodSchema>;
|
|
15
|
+
|
|
16
|
+
export async function warehousingProvidersCountHandler(
|
|
17
|
+
context: Context,
|
|
18
|
+
params: WarehousingProvidersCountParams,
|
|
19
|
+
) {
|
|
20
|
+
const { modules, userId } = context;
|
|
21
|
+
const { type } = params;
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
log('handler warehousingProvidersCountHandler', { userId, type });
|
|
25
|
+
|
|
26
|
+
const count = await modules.warehousing.count(params as any);
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
content: [
|
|
30
|
+
{
|
|
31
|
+
type: 'text' as const,
|
|
32
|
+
text: JSON.stringify({ count }),
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
};
|
|
36
|
+
} catch (error) {
|
|
37
|
+
return {
|
|
38
|
+
content: [
|
|
39
|
+
{
|
|
40
|
+
type: 'text' as const,
|
|
41
|
+
text: `Error counting warehousing providers: ${(error as Error).message}`,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Context } from '../../../context.js';
|
|
3
|
+
import { log } from '@unchainedshop/logger';
|
|
4
|
+
|
|
5
|
+
const WarehousingProviderTypeEnum = z
|
|
6
|
+
.enum(['PHYSICAL', 'VIRTUAL'])
|
|
7
|
+
.describe('Warehousing provider type');
|
|
8
|
+
|
|
9
|
+
export const WarehousingProvidersListSchema = {
|
|
10
|
+
type: WarehousingProviderTypeEnum.optional().describe('Optional filter by provider type'),
|
|
11
|
+
queryString: z.string().min(1).optional().describe('Search by _id or adapterKey (partial match)'),
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const WarehousingProvidersListZodSchema = z.object(WarehousingProvidersListSchema);
|
|
15
|
+
export type WarehousingProvidersListParams = z.infer<typeof WarehousingProvidersListZodSchema>;
|
|
16
|
+
|
|
17
|
+
export async function warehousingProvidersListHandler(
|
|
18
|
+
context: Context,
|
|
19
|
+
params: WarehousingProvidersListParams,
|
|
20
|
+
) {
|
|
21
|
+
const { modules, userId } = context;
|
|
22
|
+
const { type, queryString } = params;
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
log('handler warehousingProvidersListHandler', { userId, type, queryString });
|
|
26
|
+
|
|
27
|
+
const selector: Record<string, any> = {};
|
|
28
|
+
if (type) selector.type = type;
|
|
29
|
+
|
|
30
|
+
if (queryString) {
|
|
31
|
+
const regex = new RegExp(queryString, 'i');
|
|
32
|
+
selector.$or = [{ _id: regex }, { adapterKey: regex }];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const providers = await modules.warehousing.findProviders(selector);
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
content: [
|
|
39
|
+
{
|
|
40
|
+
type: 'text' as const,
|
|
41
|
+
text: JSON.stringify({ providers }),
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
} catch (error) {
|
|
46
|
+
return {
|
|
47
|
+
content: [
|
|
48
|
+
{
|
|
49
|
+
type: 'text' as const,
|
|
50
|
+
text: `Error fetching warehousing providers: ${(error as Error).message}`,
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Context } from '../../context.js';
|
|
2
|
+
|
|
3
|
+
export const resolveOrderFilters = async (
|
|
4
|
+
modules: Context['modules'],
|
|
5
|
+
{
|
|
6
|
+
paymentProviderIds,
|
|
7
|
+
deliveryProviderIds,
|
|
8
|
+
}: {
|
|
9
|
+
paymentProviderIds?: string[];
|
|
10
|
+
deliveryProviderIds?: string[];
|
|
11
|
+
},
|
|
12
|
+
) => {
|
|
13
|
+
const [orderPayments, orderDeliveries] = await Promise.all([
|
|
14
|
+
paymentProviderIds?.length
|
|
15
|
+
? modules.orders.payments.findOrderPaymentsByProviderIds({ paymentProviderIds })
|
|
16
|
+
: [],
|
|
17
|
+
deliveryProviderIds?.length
|
|
18
|
+
? modules.orders.deliveries.findDeliveryByProvidersId({ deliveryProviderIds })
|
|
19
|
+
: [],
|
|
20
|
+
]);
|
|
21
|
+
|
|
22
|
+
if (
|
|
23
|
+
(paymentProviderIds?.length && !orderPayments.length) ||
|
|
24
|
+
(deliveryProviderIds?.length && !orderDeliveries.length)
|
|
25
|
+
) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
paymentIds: orderPayments.map((p) => p._id),
|
|
31
|
+
deliveryIds: orderDeliveries.map((d) => d._id),
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export const formatSummaryMap = (
|
|
36
|
+
map: Map<string, { sales: number; orders: number }>,
|
|
37
|
+
): { date: string; sales: number; orders: number; avgOrderValue: number }[] => {
|
|
38
|
+
return Array.from(map.entries())
|
|
39
|
+
.reverse()
|
|
40
|
+
.map(([date, { sales, orders }]) => ({
|
|
41
|
+
date,
|
|
42
|
+
sales: Number(sales.toFixed(2)),
|
|
43
|
+
orders,
|
|
44
|
+
avgOrderValue: orders > 0 ? Math.round(sales / orders) : 0,
|
|
45
|
+
}));
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export const resolveDateRange = (from?: string, to?: string, fallbackDays = 30) => {
|
|
49
|
+
const endDate = to ? new Date(to) : new Date();
|
|
50
|
+
const startDate = from ? new Date(from) : new Date(endDate.getTime() - (fallbackDays - 1) * 86400000);
|
|
51
|
+
return { startDate, endDate };
|
|
52
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
export const OrderFilterSchema = {
|
|
4
|
+
paymentProviderIds: z.array(z.string()).optional(),
|
|
5
|
+
deliveryProviderIds: z.array(z.string()).optional(),
|
|
6
|
+
status: z.array(z.enum(['PENDING', 'CONFIRMED', 'SHIPPED', 'DELIVERED', 'CANCELLED'])).optional(),
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export const DateRangeSchema = {
|
|
10
|
+
from: z.string().datetime().optional(),
|
|
11
|
+
to: z.string().datetime().optional(),
|
|
12
|
+
};
|
|
@@ -2,17 +2,58 @@ import { log } from '@unchainedshop/logger';
|
|
|
2
2
|
import { SortOption } from '@unchainedshop/utils';
|
|
3
3
|
import { OrderQuery } from '@unchainedshop/core-orders';
|
|
4
4
|
import { Context } from '../../../context.js';
|
|
5
|
+
import { PaymentProviderType } from '@unchainedshop/core-payment';
|
|
6
|
+
import { DeliveryProviderType } from '@unchainedshop/core-delivery';
|
|
5
7
|
|
|
6
8
|
export default async function orders(
|
|
7
9
|
root: never,
|
|
8
10
|
params: OrderQuery & { limit?: number; offset?: number; sort?: SortOption[] },
|
|
9
11
|
{ modules, userId }: Context,
|
|
10
12
|
) {
|
|
11
|
-
const {
|
|
13
|
+
const { limit, offset, paymentProviderTypes, deliveryProviderTypes, ...restParams } = params;
|
|
14
|
+
log(`query orders: ${limit} ${offset} ${restParams?.queryString || ''}`, { userId });
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
const promises: Promise<any>[] = [];
|
|
17
|
+
|
|
18
|
+
let paymentProviderIds: string[] | undefined;
|
|
19
|
+
let deliveryProviderIds: string[] | undefined;
|
|
20
|
+
|
|
21
|
+
if (paymentProviderTypes?.length) {
|
|
22
|
+
promises.push(
|
|
23
|
+
modules.payment.paymentProviders
|
|
24
|
+
.findProviders({ type: { $in: paymentProviderTypes as PaymentProviderType[] } })
|
|
25
|
+
.then((providers) => (paymentProviderIds = providers.map((p) => p._id))),
|
|
26
|
+
);
|
|
27
|
+
}
|
|
16
28
|
|
|
17
|
-
|
|
29
|
+
if (deliveryProviderTypes?.length) {
|
|
30
|
+
promises.push(
|
|
31
|
+
modules.delivery
|
|
32
|
+
.findProviders({ type: { $in: deliveryProviderTypes as DeliveryProviderType[] } })
|
|
33
|
+
.then((providers) => (deliveryProviderIds = providers.map((p) => p._id))),
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
await Promise.all(promises);
|
|
38
|
+
const [orderPayments, orderDeliveries] = await Promise.all([
|
|
39
|
+
paymentProviderIds
|
|
40
|
+
? modules.orders.payments.findOrderPaymentsByProviderIds({ paymentProviderIds })
|
|
41
|
+
: [],
|
|
42
|
+
deliveryProviderIds
|
|
43
|
+
? modules.orders.deliveries.findDeliveryByProvidersId({ deliveryProviderIds })
|
|
44
|
+
: [],
|
|
45
|
+
]);
|
|
46
|
+
if (
|
|
47
|
+
(paymentProviderTypes?.length && !orderPayments.length) ||
|
|
48
|
+
(deliveryProviderTypes?.length && !orderDeliveries.length)
|
|
49
|
+
)
|
|
50
|
+
return [];
|
|
51
|
+
const paymentIds = orderPayments.map((p) => p._id);
|
|
52
|
+
const deliveryIds = orderDeliveries.map((d) => d._id);
|
|
53
|
+
|
|
54
|
+
return modules.orders.findOrders({
|
|
55
|
+
...restParams,
|
|
56
|
+
paymentIds,
|
|
57
|
+
deliveryIds,
|
|
58
|
+
});
|
|
18
59
|
}
|
|
@@ -1,13 +1,54 @@
|
|
|
1
1
|
import { log } from '@unchainedshop/logger';
|
|
2
2
|
import { OrderQuery } from '@unchainedshop/core-orders';
|
|
3
3
|
import { Context } from '../../../context.js';
|
|
4
|
+
import { PaymentProviderType } from '@unchainedshop/core-payment';
|
|
5
|
+
import { DeliveryProviderType } from '@unchainedshop/core-delivery';
|
|
4
6
|
|
|
5
7
|
export default async function ordersCount(
|
|
6
8
|
root: never,
|
|
7
9
|
params: OrderQuery,
|
|
8
10
|
{ modules, userId }: Context,
|
|
9
11
|
) {
|
|
12
|
+
const { paymentProviderTypes, deliveryProviderTypes, ...restParams } = params;
|
|
10
13
|
log(`query ordersCount: ${params.includeCarts ? 'includeCart' : ''}`, { userId });
|
|
11
14
|
|
|
12
|
-
|
|
15
|
+
const promises: Promise<any>[] = [];
|
|
16
|
+
|
|
17
|
+
let paymentProviderIds: string[] | undefined;
|
|
18
|
+
let deliveryProviderIds: string[] | undefined;
|
|
19
|
+
|
|
20
|
+
if (paymentProviderTypes?.length) {
|
|
21
|
+
promises.push(
|
|
22
|
+
modules.payment.paymentProviders
|
|
23
|
+
.findProviders({ type: { $in: paymentProviderTypes as PaymentProviderType[] } })
|
|
24
|
+
.then((providers) => (paymentProviderIds = providers.map((p) => p._id))),
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (deliveryProviderTypes?.length) {
|
|
29
|
+
promises.push(
|
|
30
|
+
modules.delivery
|
|
31
|
+
.findProviders({ type: { $in: deliveryProviderTypes as DeliveryProviderType[] } })
|
|
32
|
+
.then((providers) => (deliveryProviderIds = providers.map((p) => p._id))),
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
await Promise.all(promises);
|
|
37
|
+
const [orderPayments, orderDeliveries] = await Promise.all([
|
|
38
|
+
paymentProviderIds
|
|
39
|
+
? modules.orders.payments.findOrderPaymentsByProviderIds({ paymentProviderIds })
|
|
40
|
+
: [],
|
|
41
|
+
deliveryProviderIds
|
|
42
|
+
? modules.orders.deliveries.findDeliveryByProvidersId({ deliveryProviderIds })
|
|
43
|
+
: [],
|
|
44
|
+
]);
|
|
45
|
+
if (
|
|
46
|
+
(paymentProviderTypes?.length && !orderPayments.length) ||
|
|
47
|
+
(deliveryProviderTypes && !orderDeliveries.length)
|
|
48
|
+
)
|
|
49
|
+
return 0;
|
|
50
|
+
const paymentIds = orderPayments.map((p) => p._id);
|
|
51
|
+
const deliveryIds = orderDeliveries.map((d) => d._id);
|
|
52
|
+
|
|
53
|
+
return modules.orders.count({ ...restParams, paymentIds, deliveryIds });
|
|
13
54
|
}
|
package/src/schema/query.ts
CHANGED
|
@@ -248,7 +248,14 @@ export default [
|
|
|
248
248
|
"""
|
|
249
249
|
Returns total number of orders
|
|
250
250
|
"""
|
|
251
|
-
ordersCount(
|
|
251
|
+
ordersCount(
|
|
252
|
+
includeCarts: Boolean = false
|
|
253
|
+
queryString: String
|
|
254
|
+
paymentProviderTypes: [PaymentProviderType!]
|
|
255
|
+
deliveryProviderTypes: [DeliveryProviderType!]
|
|
256
|
+
dateRange: DateFilterInput
|
|
257
|
+
status: [OrderStatus!]
|
|
258
|
+
): Int!
|
|
252
259
|
|
|
253
260
|
"""
|
|
254
261
|
Get all orders, by default sorted by creation date (descending)
|
|
@@ -260,6 +267,9 @@ export default [
|
|
|
260
267
|
queryString: String
|
|
261
268
|
status: [OrderStatus!]
|
|
262
269
|
sort: [SortOptionInput!]
|
|
270
|
+
paymentProviderTypes: [PaymentProviderType!]
|
|
271
|
+
deliveryProviderTypes: [DeliveryProviderType!]
|
|
272
|
+
dateRange: DateFilterInput
|
|
263
273
|
): [Order!]!
|
|
264
274
|
|
|
265
275
|
"""
|