@unchainedshop/api 2.9.4 → 2.10.1
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/loaders/index.js +15 -13
- package/lib/loaders/index.js.map +1 -1
- package/lib/resolvers/mutations/orders/addCartDiscount.js +5 -2
- package/lib/resolvers/mutations/orders/addCartDiscount.js.map +1 -1
- package/lib/resolvers/mutations/orders/addCartProduct.js +3 -1
- package/lib/resolvers/mutations/orders/addCartProduct.js.map +1 -1
- package/lib/resolvers/mutations/orders/addCartQuotation.js +3 -1
- package/lib/resolvers/mutations/orders/addCartQuotation.js.map +1 -1
- package/lib/resolvers/mutations/orders/addMultipleCartProducts.js +3 -1
- package/lib/resolvers/mutations/orders/addMultipleCartProducts.js.map +1 -1
- package/lib/resolvers/mutations/orders/checkoutCart.d.ts +0 -1
- package/lib/resolvers/mutations/orders/checkoutCart.js +5 -4
- package/lib/resolvers/mutations/orders/checkoutCart.js.map +1 -1
- package/lib/resolvers/mutations/orders/confirmOrder.d.ts +0 -1
- package/lib/resolvers/mutations/orders/confirmOrder.js +1 -1
- package/lib/resolvers/mutations/orders/confirmOrder.js.map +1 -1
- package/lib/resolvers/mutations/orders/createCart.js +1 -1
- package/lib/resolvers/mutations/orders/createCart.js.map +1 -1
- package/lib/resolvers/mutations/orders/emptyCart.js +7 -4
- package/lib/resolvers/mutations/orders/emptyCart.js.map +1 -1
- package/lib/resolvers/mutations/orders/rejectOrder.d.ts +0 -1
- package/lib/resolvers/mutations/orders/rejectOrder.js +1 -1
- package/lib/resolvers/mutations/orders/rejectOrder.js.map +1 -1
- package/lib/resolvers/mutations/orders/signPaymentProviderForCheckout.js +7 -3
- package/lib/resolvers/mutations/orders/signPaymentProviderForCheckout.js.map +1 -1
- package/lib/resolvers/mutations/orders/updateCart.js +4 -2
- package/lib/resolvers/mutations/orders/updateCart.js.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderDeliveryPickUp.js +1 -4
- package/lib/resolvers/mutations/orders/updateOrderDeliveryPickUp.js.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderDeliveryShipping.js +1 -4
- package/lib/resolvers/mutations/orders/updateOrderDeliveryShipping.js.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderPaymentCard.js +1 -4
- package/lib/resolvers/mutations/orders/updateOrderPaymentCard.js.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderPaymentGeneric.js +1 -4
- package/lib/resolvers/mutations/orders/updateOrderPaymentGeneric.js.map +1 -1
- package/lib/resolvers/mutations/orders/updateOrderPaymentInvoice.js +1 -4
- package/lib/resolvers/mutations/orders/updateOrderPaymentInvoice.js.map +1 -1
- package/lib/resolvers/mutations/utils/getOrderCart.js +3 -8
- package/lib/resolvers/mutations/utils/getOrderCart.js.map +1 -1
- package/lib/resolvers/type/user-types.js +7 -3
- package/lib/resolvers/type/user-types.js.map +1 -1
- package/lib/schema/mutation.js +3 -3
- package/package.json +8 -8
- package/src/loaders/index.ts +240 -202
- package/src/resolvers/mutations/orders/addCartDiscount.ts +5 -2
- package/src/resolvers/mutations/orders/addCartProduct.ts +8 -1
- package/src/resolvers/mutations/orders/addCartQuotation.ts +3 -0
- package/src/resolvers/mutations/orders/addMultipleCartProducts.ts +6 -1
- package/src/resolvers/mutations/orders/checkoutCart.ts +5 -5
- package/src/resolvers/mutations/orders/confirmOrder.ts +1 -2
- package/src/resolvers/mutations/orders/createCart.ts +2 -2
- package/src/resolvers/mutations/orders/emptyCart.ts +7 -4
- package/src/resolvers/mutations/orders/rejectOrder.ts +1 -2
- package/src/resolvers/mutations/orders/signPaymentProviderForCheckout.ts +6 -2
- package/src/resolvers/mutations/orders/updateCart.ts +3 -2
- package/src/resolvers/mutations/orders/updateOrderDeliveryPickUp.ts +1 -5
- package/src/resolvers/mutations/orders/updateOrderDeliveryShipping.ts +1 -5
- package/src/resolvers/mutations/orders/updateOrderPaymentCard.ts +1 -5
- package/src/resolvers/mutations/orders/updateOrderPaymentGeneric.ts +1 -5
- package/src/resolvers/mutations/orders/updateOrderPaymentInvoice.ts +1 -5
- package/src/resolvers/mutations/utils/getOrderCart.ts +6 -8
- package/src/resolvers/type/user-types.ts +7 -3
- package/src/schema/mutation.ts +3 -3
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
import { OrderNotFoundError
|
|
1
|
+
import { OrderNotFoundError } from '../../../errors.js';
|
|
2
2
|
export const getOrderCart = async (params, context) => {
|
|
3
|
-
const {
|
|
3
|
+
const { modules, services } = context;
|
|
4
4
|
const { orderId, user } = params;
|
|
5
5
|
if (orderId) {
|
|
6
6
|
const order = await modules.orders.findOrder({ orderId });
|
|
7
7
|
if (!order)
|
|
8
8
|
throw new OrderNotFoundError({ orderId });
|
|
9
|
-
if (!modules.orders.isCart(order))
|
|
10
|
-
throw new OrderWrongStatusError({ status: order.status });
|
|
11
9
|
return order;
|
|
12
10
|
}
|
|
13
|
-
|
|
14
|
-
if (cart)
|
|
15
|
-
return cart;
|
|
16
|
-
return services.orders.createUserCart({ user, countryCode: context.countryContext }, context);
|
|
11
|
+
return services.orders.nextUserCart({ user, countryCode: context.countryContext, forceCartCreation: true }, context);
|
|
17
12
|
};
|
|
18
13
|
//# sourceMappingURL=getOrderCart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getOrderCart.js","sourceRoot":"","sources":["../../../../src/resolvers/mutations/utils/getOrderCart.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"getOrderCart.js","sourceRoot":"","sources":["../../../../src/resolvers/mutations/utils/getOrderCart.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,MAAwC,EAAE,OAAgB,EAAE,EAAE;IAC/F,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAEjC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,YAAY,CACjC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,cAAc,EAAE,iBAAiB,EAAE,IAAI,EAAE,EACtE,OAAO,CACR,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -58,17 +58,21 @@ export const User = {
|
|
|
58
58
|
async cart(user, params, context) {
|
|
59
59
|
const { modules, countryContext } = context;
|
|
60
60
|
await checkAction(context, viewUserOrders, [user, params]);
|
|
61
|
-
return modules.orders.cart({
|
|
61
|
+
return modules.orders.cart({
|
|
62
|
+
countryContext: countryContext || user.lastLogin?.countryCode,
|
|
63
|
+
orderNumber: params.orderNumber,
|
|
64
|
+
userId: user._id,
|
|
65
|
+
});
|
|
62
66
|
},
|
|
63
67
|
async tokens(user, params, context) {
|
|
64
68
|
await checkAction(context, viewUserPrivateInfos, [user, params]);
|
|
65
69
|
return context.modules.warehousing.findTokensForUser(user);
|
|
66
70
|
},
|
|
67
|
-
|
|
71
|
+
async country(user, params, context) {
|
|
68
72
|
await checkAction(context, viewUserPrivateInfos, [user, params]);
|
|
69
73
|
return context.services.users.getUserCountry(user, context);
|
|
70
74
|
},
|
|
71
|
-
|
|
75
|
+
async enrollments(user, params, context) {
|
|
72
76
|
await checkAction(context, viewUserEnrollments, [user, params]);
|
|
73
77
|
return context.modules.enrollments.findEnrollments({
|
|
74
78
|
...(params || {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-types.js","sourceRoot":"","sources":["../../../src/resolvers/type/user-types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"user-types.js","sourceRoot":"","sources":["../../../src/resolvers/type/user-types.ts"],"names":[],"mappings":"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"}
|
package/lib/schema/mutation.js
CHANGED
|
@@ -193,7 +193,7 @@ export default [
|
|
|
193
193
|
Process the checkout (automatically charge & deliver if possible), the cart will get
|
|
194
194
|
transformed to an ordinary order if everything goes well.
|
|
195
195
|
"""
|
|
196
|
-
checkoutCart(orderId: ID,
|
|
196
|
+
checkoutCart(orderId: ID, paymentContext: JSON, deliveryContext: JSON): Order!
|
|
197
197
|
|
|
198
198
|
"""
|
|
199
199
|
Change the quantity or configuration of an item in an open order.align-baselineAll
|
|
@@ -304,12 +304,12 @@ export default [
|
|
|
304
304
|
"""
|
|
305
305
|
Manually confirm an order which is in progress
|
|
306
306
|
"""
|
|
307
|
-
confirmOrder(orderId: ID!,
|
|
307
|
+
confirmOrder(orderId: ID!, paymentContext: JSON, deliveryContext: JSON): Order!
|
|
308
308
|
|
|
309
309
|
"""
|
|
310
310
|
Manually reject an order which is in progress
|
|
311
311
|
"""
|
|
312
|
-
rejectOrder(orderId: ID!,
|
|
312
|
+
rejectOrder(orderId: ID!, paymentContext: JSON, deliveryContext: JSON): Order!
|
|
313
313
|
|
|
314
314
|
"""
|
|
315
315
|
Manually mark an unpaid/partially paid order as fully paid
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/api",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.1",
|
|
4
4
|
"main": "lib/api-index.js",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./lib/api-index.js",
|
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@metamask/eth-sig-util": "^7.0.2",
|
|
51
|
-
"@unchainedshop/core": "^2.
|
|
52
|
-
"@unchainedshop/events": "^2.
|
|
53
|
-
"@unchainedshop/logger": "^2.
|
|
54
|
-
"@unchainedshop/roles": "^2.
|
|
55
|
-
"@unchainedshop/utils": "^2.
|
|
51
|
+
"@unchainedshop/core": "^2.10.1",
|
|
52
|
+
"@unchainedshop/events": "^2.10.1",
|
|
53
|
+
"@unchainedshop/logger": "^2.10.1",
|
|
54
|
+
"@unchainedshop/roles": "^2.10.1",
|
|
55
|
+
"@unchainedshop/utils": "^2.10.1",
|
|
56
56
|
"accounting": "0.4.1",
|
|
57
57
|
"dataloader": "^2.2.2",
|
|
58
58
|
"graphql-scalars": "^1.23.0",
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@types/graphql-upload": "^16.0.7",
|
|
66
66
|
"@types/locale": "^0.1.4",
|
|
67
|
-
"@types/node": "^20.
|
|
68
|
-
"@unchainedshop/types": "^2.
|
|
67
|
+
"@types/node": "^20.14.1",
|
|
68
|
+
"@unchainedshop/types": "^2.10.1",
|
|
69
69
|
"express": "^4.19.2",
|
|
70
70
|
"jest": "^29.7.0",
|
|
71
71
|
"ts-jest": "^29.1.4",
|
package/src/loaders/index.ts
CHANGED
|
@@ -38,236 +38,274 @@ const loaders = async (
|
|
|
38
38
|
unchainedAPI: UnchainedCore,
|
|
39
39
|
): Promise<UnchainedLoaders['loaders']> => {
|
|
40
40
|
return {
|
|
41
|
-
assortmentLoader: new DataLoader(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const assortments = await unchainedAPI.modules.assortments.findAssortments({
|
|
45
|
-
assortmentIds,
|
|
46
|
-
includeInactive: true,
|
|
47
|
-
includeLeaves: true,
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
return queries.map(({ assortmentId }) => {
|
|
51
|
-
return assortments.find((assortment) => {
|
|
52
|
-
if (assortment._id !== assortmentId) return false;
|
|
53
|
-
return true;
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
}),
|
|
41
|
+
assortmentLoader: new DataLoader(
|
|
42
|
+
async (queries) => {
|
|
43
|
+
const assortmentIds = [...new Set(queries.map((q) => q.assortmentId).filter(Boolean))];
|
|
57
44
|
|
|
58
|
-
|
|
59
|
-
|
|
45
|
+
const assortments = await unchainedAPI.modules.assortments.findAssortments({
|
|
46
|
+
assortmentIds,
|
|
47
|
+
includeInactive: true,
|
|
48
|
+
includeLeaves: true,
|
|
49
|
+
});
|
|
60
50
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
51
|
+
return queries.map(({ assortmentId }) => {
|
|
52
|
+
return assortments.find((assortment) => {
|
|
53
|
+
if (assortment._id !== assortmentId) return false;
|
|
54
|
+
return true;
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
{ batchScheduleFn: (cb) => setImmediate(cb) },
|
|
59
|
+
),
|
|
60
|
+
|
|
61
|
+
assortmentTextLoader: new DataLoader(
|
|
62
|
+
async (queries) => {
|
|
63
|
+
const assortmentIds = [...new Set(queries.map((q) => q.assortmentId).filter(Boolean))];
|
|
64
|
+
|
|
65
|
+
const texts = await unchainedAPI.modules.assortments.texts.findTexts(
|
|
66
|
+
{ assortmentId: { $in: assortmentIds } },
|
|
67
|
+
{
|
|
68
|
+
sort: {
|
|
69
|
+
assortmentId: 1,
|
|
70
|
+
},
|
|
66
71
|
},
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
const filterFn =
|
|
75
|
+
({ assortmentId }) =>
|
|
76
|
+
(text) =>
|
|
77
|
+
text.assortmentId === assortmentId;
|
|
78
|
+
|
|
79
|
+
return getFilteredQueries({ queries, texts, filterFn });
|
|
80
|
+
},
|
|
81
|
+
{ batchScheduleFn: (cb) => setImmediate(cb) },
|
|
82
|
+
),
|
|
83
|
+
|
|
84
|
+
assortmentMediaTextLoader: new DataLoader(
|
|
85
|
+
async (queries) => {
|
|
86
|
+
const assortmentMediaIds = [...new Set(queries.map((q) => q.assortmentMediaId).filter(Boolean))];
|
|
87
|
+
|
|
88
|
+
const texts = await unchainedAPI.modules.assortments.media.texts.findMediaTexts(
|
|
89
|
+
{ assortmentMediaId: { $in: assortmentMediaIds } },
|
|
90
|
+
{
|
|
91
|
+
sort: {
|
|
92
|
+
assortmentMediaId: 1,
|
|
93
|
+
},
|
|
86
94
|
},
|
|
87
|
-
|
|
88
|
-
);
|
|
95
|
+
);
|
|
89
96
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
97
|
+
const filterFn =
|
|
98
|
+
({ assortmentMediaId }) =>
|
|
99
|
+
(text) =>
|
|
100
|
+
text.assortmentMediaId === assortmentMediaId;
|
|
94
101
|
|
|
95
|
-
|
|
96
|
-
|
|
102
|
+
return getFilteredQueries({ queries, texts, filterFn });
|
|
103
|
+
},
|
|
104
|
+
{ batchScheduleFn: (cb) => setImmediate(cb) },
|
|
105
|
+
),
|
|
97
106
|
|
|
98
|
-
assortmentLinkLoader: new DataLoader(
|
|
99
|
-
|
|
107
|
+
assortmentLinkLoader: new DataLoader(
|
|
108
|
+
async (queries) => {
|
|
109
|
+
const parentAssortmentIds = [
|
|
110
|
+
...new Set(queries.map((q) => q.parentAssortmentId).filter(Boolean)),
|
|
111
|
+
];
|
|
100
112
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
113
|
+
const links = await unchainedAPI.modules.assortments.links.findLinks({
|
|
114
|
+
parentAssortmentIds,
|
|
115
|
+
});
|
|
104
116
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
117
|
+
return queries.map(({ parentAssortmentId, childAssortmentId }) => {
|
|
118
|
+
return links.find((link) => {
|
|
119
|
+
if (link.parentAssortmentId !== parentAssortmentId) return false;
|
|
120
|
+
if (childAssortmentId && link.childAssortmentId !== childAssortmentId) return false;
|
|
121
|
+
return true;
|
|
122
|
+
});
|
|
110
123
|
});
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
parentAssortmentIds
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
assortmentIds
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
assortmentProductLoader: new DataLoader(async (queries) => {
|
|
148
|
-
const assortmentIds = [...new Set(queries.map((q) => q.assortmentId).filter(Boolean))];
|
|
149
|
-
|
|
150
|
-
const assortmentProducts = await unchainedAPI.modules.assortments.products.findProducts({
|
|
151
|
-
assortmentIds,
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
return queries.map(({ assortmentId, productId }) => {
|
|
155
|
-
return assortmentProducts.find((assortmentProduct) => {
|
|
156
|
-
if (assortmentProduct.assortmentId !== assortmentId) return false;
|
|
157
|
-
if (assortmentProduct.productId !== productId) return false;
|
|
158
|
-
return true;
|
|
124
|
+
},
|
|
125
|
+
{ batchScheduleFn: (cb) => setImmediate(cb) },
|
|
126
|
+
),
|
|
127
|
+
|
|
128
|
+
assortmentLinksLoader: new DataLoader(
|
|
129
|
+
async (queries) => {
|
|
130
|
+
const parentAssortmentIds = [
|
|
131
|
+
...new Set(queries.flatMap((q) => q.parentAssortmentId).filter(Boolean)),
|
|
132
|
+
];
|
|
133
|
+
const assortmentIds = [...new Set(queries.flatMap((q) => q.assortmentId).filter(Boolean))];
|
|
134
|
+
|
|
135
|
+
const linksByParentAssortmentId =
|
|
136
|
+
parentAssortmentIds?.length &&
|
|
137
|
+
(await unchainedAPI.modules.assortments.links.findLinks({
|
|
138
|
+
parentAssortmentIds,
|
|
139
|
+
}));
|
|
140
|
+
const linksByAssortmentId =
|
|
141
|
+
assortmentIds?.length &&
|
|
142
|
+
(await unchainedAPI.modules.assortments.links.findLinks({
|
|
143
|
+
assortmentIds,
|
|
144
|
+
}));
|
|
145
|
+
|
|
146
|
+
return queries.map(({ parentAssortmentId, assortmentId }) => {
|
|
147
|
+
if (parentAssortmentId) {
|
|
148
|
+
return linksByParentAssortmentId.filter(
|
|
149
|
+
(link) => link.parentAssortmentId === parentAssortmentId,
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
if (assortmentId) {
|
|
153
|
+
return linksByAssortmentId.filter(
|
|
154
|
+
(link) =>
|
|
155
|
+
link.parentAssortmentId === assortmentId || link.childAssortmentId === assortmentId,
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
return [];
|
|
159
159
|
});
|
|
160
|
-
}
|
|
161
|
-
|
|
160
|
+
},
|
|
161
|
+
{ batchScheduleFn: (cb) => setImmediate(cb) },
|
|
162
|
+
),
|
|
162
163
|
|
|
163
|
-
|
|
164
|
-
|
|
164
|
+
assortmentProductLoader: new DataLoader(
|
|
165
|
+
async (queries) => {
|
|
166
|
+
const assortmentIds = [...new Set(queries.map((q) => q.assortmentId).filter(Boolean))];
|
|
165
167
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
});
|
|
168
|
+
const assortmentProducts = await unchainedAPI.modules.assortments.products.findProducts({
|
|
169
|
+
assortmentIds,
|
|
170
|
+
});
|
|
170
171
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
172
|
+
return queries.map(({ assortmentId, productId }) => {
|
|
173
|
+
return assortmentProducts.find((assortmentProduct) => {
|
|
174
|
+
if (assortmentProduct.assortmentId !== assortmentId) return false;
|
|
175
|
+
if (assortmentProduct.productId !== productId) return false;
|
|
176
|
+
return true;
|
|
177
|
+
});
|
|
175
178
|
});
|
|
176
|
-
}
|
|
177
|
-
|
|
179
|
+
},
|
|
180
|
+
{ batchScheduleFn: (cb) => setImmediate(cb) },
|
|
181
|
+
),
|
|
178
182
|
|
|
179
|
-
|
|
180
|
-
|
|
183
|
+
filterLoader: new DataLoader(
|
|
184
|
+
async (queries) => {
|
|
185
|
+
const filterIds = [...new Set(queries.map((q) => q.filterId).filter(Boolean))];
|
|
181
186
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
sort: {
|
|
186
|
-
filterId: 1,
|
|
187
|
-
},
|
|
188
|
-
},
|
|
189
|
-
);
|
|
190
|
-
|
|
191
|
-
const filterFn =
|
|
192
|
-
({ filterId, filterOptionValue }) =>
|
|
193
|
-
(text) =>
|
|
194
|
-
text.filterId === filterId && text.filterOptionValue === filterOptionValue;
|
|
195
|
-
|
|
196
|
-
return getFilteredQueries({ queries, texts, filterFn });
|
|
197
|
-
}),
|
|
198
|
-
|
|
199
|
-
productLoader: new DataLoader(async (queries) => {
|
|
200
|
-
const productIds = [...new Set(queries.map((q) => q.productId).filter(Boolean))]; // you don't need lodash, _.unique my ass
|
|
201
|
-
|
|
202
|
-
const products = await unchainedAPI.modules.products.findProducts({
|
|
203
|
-
productIds,
|
|
204
|
-
productSelector: {
|
|
205
|
-
status: { $in: [null, ProductStatus.ACTIVE, ProductStatus.DELETED] },
|
|
206
|
-
},
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
return queries.map(({ productId }) => {
|
|
210
|
-
return products.find((product) => {
|
|
211
|
-
if (product._id !== productId) return false;
|
|
212
|
-
return true;
|
|
187
|
+
const filters = await unchainedAPI.modules.filters.findFilters({
|
|
188
|
+
filterIds,
|
|
189
|
+
includeInactive: true,
|
|
213
190
|
});
|
|
214
|
-
});
|
|
215
|
-
}),
|
|
216
|
-
|
|
217
|
-
productTextLoader: new DataLoader(async (queries) => {
|
|
218
|
-
const productIds = [...new Set(queries.map((q) => q.productId).filter(Boolean))];
|
|
219
191
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
192
|
+
return queries.map(({ filterId }) => {
|
|
193
|
+
return filters.find((product) => {
|
|
194
|
+
if (product._id !== filterId) return false;
|
|
195
|
+
return true;
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
},
|
|
199
|
+
{ batchScheduleFn: (cb) => setImmediate(cb) },
|
|
200
|
+
),
|
|
201
|
+
|
|
202
|
+
filterTextLoader: new DataLoader(
|
|
203
|
+
async (queries) => {
|
|
204
|
+
const filterIds = [...new Set(queries.map((q) => q.filterId).filter(Boolean))];
|
|
205
|
+
|
|
206
|
+
const texts = await unchainedAPI.modules.filters.texts.findTexts(
|
|
207
|
+
{ filterId: { $in: filterIds } },
|
|
208
|
+
{
|
|
209
|
+
sort: {
|
|
210
|
+
filterId: 1,
|
|
211
|
+
},
|
|
225
212
|
},
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
213
|
+
);
|
|
214
|
+
|
|
215
|
+
const filterFn =
|
|
216
|
+
({ filterId, filterOptionValue }) =>
|
|
217
|
+
(text) =>
|
|
218
|
+
text.filterId === filterId && text.filterOptionValue === filterOptionValue;
|
|
219
|
+
|
|
220
|
+
return getFilteredQueries({ queries, texts, filterFn });
|
|
221
|
+
},
|
|
222
|
+
{ batchScheduleFn: (cb) => setImmediate(cb) },
|
|
223
|
+
),
|
|
224
|
+
|
|
225
|
+
productLoader: new DataLoader(
|
|
226
|
+
async (queries) => {
|
|
227
|
+
const productIds = [...new Set(queries.map((q) => q.productId).filter(Boolean))]; // you don't need lodash, _.unique my ass
|
|
228
|
+
|
|
229
|
+
const products = await unchainedAPI.modules.products.findProducts({
|
|
230
|
+
productIds,
|
|
231
|
+
productSelector: {
|
|
232
|
+
status: { $in: [null, ProductStatus.ACTIVE, ProductStatus.DELETED] },
|
|
233
|
+
},
|
|
234
|
+
});
|
|
239
235
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
236
|
+
return queries.map(({ productId }) => {
|
|
237
|
+
return products.find((product) => {
|
|
238
|
+
if (product._id !== productId) return false;
|
|
239
|
+
return true;
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
},
|
|
243
|
+
{ batchScheduleFn: (cb) => setImmediate(cb) },
|
|
244
|
+
),
|
|
245
|
+
|
|
246
|
+
productTextLoader: new DataLoader(
|
|
247
|
+
async (queries) => {
|
|
248
|
+
const productIds = [...new Set(queries.map((q) => q.productId).filter(Boolean))];
|
|
249
|
+
|
|
250
|
+
const texts = await unchainedAPI.modules.products.texts.findTexts(
|
|
251
|
+
{ productId: { $in: productIds } },
|
|
252
|
+
{
|
|
253
|
+
sort: {
|
|
254
|
+
productId: 1,
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
);
|
|
258
|
+
|
|
259
|
+
const filterFn =
|
|
260
|
+
({ productId }) =>
|
|
261
|
+
(text) =>
|
|
262
|
+
text.productId === productId;
|
|
263
|
+
|
|
264
|
+
return getFilteredQueries({ queries, texts, filterFn });
|
|
265
|
+
},
|
|
266
|
+
{ batchScheduleFn: (cb) => setImmediate(cb) },
|
|
267
|
+
),
|
|
268
|
+
|
|
269
|
+
productMediaTextLoader: new DataLoader(
|
|
270
|
+
async (queries) => {
|
|
271
|
+
const productMediaIds = [...new Set(queries.map((q) => q.productMediaId).filter(Boolean))];
|
|
272
|
+
|
|
273
|
+
const texts = await unchainedAPI.modules.products.media.texts.findMediaTexts(
|
|
274
|
+
{ productMediaId: { $in: productMediaIds } },
|
|
275
|
+
{
|
|
276
|
+
sort: {
|
|
277
|
+
productMediaId: 1,
|
|
278
|
+
},
|
|
245
279
|
},
|
|
246
|
-
|
|
247
|
-
);
|
|
280
|
+
);
|
|
248
281
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
282
|
+
const filterFn =
|
|
283
|
+
({ productMediaId }) =>
|
|
284
|
+
(text) =>
|
|
285
|
+
text.productMediaId === productMediaId;
|
|
253
286
|
|
|
254
|
-
|
|
255
|
-
|
|
287
|
+
return getFilteredQueries({ queries, texts, filterFn });
|
|
288
|
+
},
|
|
289
|
+
{ batchScheduleFn: (cb) => setImmediate(cb) },
|
|
290
|
+
),
|
|
256
291
|
|
|
257
|
-
fileLoader: new DataLoader(
|
|
258
|
-
|
|
292
|
+
fileLoader: new DataLoader(
|
|
293
|
+
async (queries) => {
|
|
294
|
+
const fileIds = [...new Set(queries.map((q) => q.fileId).filter(Boolean))]; // you don't need lodash, _.unique my ass
|
|
259
295
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
296
|
+
const files = await unchainedAPI.modules.files.findFiles({
|
|
297
|
+
_id: { $in: fileIds },
|
|
298
|
+
});
|
|
263
299
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
300
|
+
return queries.map(({ fileId }) => {
|
|
301
|
+
return files.find((file) => {
|
|
302
|
+
if (file._id !== fileId) return false;
|
|
303
|
+
return true;
|
|
304
|
+
});
|
|
268
305
|
});
|
|
269
|
-
}
|
|
270
|
-
|
|
306
|
+
},
|
|
307
|
+
{ batchScheduleFn: (cb) => setImmediate(cb) },
|
|
308
|
+
),
|
|
271
309
|
};
|
|
272
310
|
};
|
|
273
311
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Context, Root } from '@unchainedshop/types/api.js';
|
|
2
2
|
import { log } from '@unchainedshop/logger';
|
|
3
3
|
import { getOrderCart } from '../utils/getOrderCart.js';
|
|
4
|
+
import { OrderWrongStatusError } from '../../../errors.js';
|
|
4
5
|
|
|
5
6
|
export default async function addCartDiscount(
|
|
6
7
|
root: Root,
|
|
@@ -11,7 +12,9 @@ export default async function addCartDiscount(
|
|
|
11
12
|
|
|
12
13
|
log(`mutation addCartDiscount ${code} ${orderId}`, { userId, orderId });
|
|
13
14
|
|
|
14
|
-
const
|
|
15
|
+
const order = await getOrderCart({ orderId, user }, context);
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
if (!modules.orders.isCart(order)) throw new OrderWrongStatusError({ status: order.status });
|
|
18
|
+
|
|
19
|
+
return modules.orders.discounts.createManualOrderDiscount({ order, code }, context);
|
|
17
20
|
}
|