@chevre/domain 25.0.0-alpha.2 → 25.0.0-alpha.21
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/chevre/emailMessageBuilder.d.ts +10 -4
- package/lib/chevre/emailMessageBuilder.js +48 -73
- package/lib/chevre/repo/acceptedOffer.d.ts +1 -5
- package/lib/chevre/repo/acceptedOffer.js +5 -5
- package/lib/chevre/repo/acceptedOfferInReserve.d.ts +1 -5
- package/lib/chevre/repo/acceptedOfferInReserve.js +4 -4
- package/lib/chevre/repo/emailMessage.d.ts +18 -9
- package/lib/chevre/repo/emailMessage.js +26 -36
- package/lib/chevre/repo/factory/acceptedOffer/reserveTransaction2itemOffered.d.ts +1 -3
- package/lib/chevre/repo/factory/acceptedOffer/reserveTransaction2itemOffered.js +2 -3
- package/lib/chevre/repo/mongoose/schemas/emailMessages.d.ts +9 -1
- package/lib/chevre/repo/mongoose/schemas/emailMessages.js +5 -20
- package/lib/chevre/repo/mongoose/schemas/order.d.ts +4 -0
- package/lib/chevre/repo/mongoose/schemas/order.js +11 -110
- package/lib/chevre/repo/mongoose/schemas/setting.d.ts +0 -6
- package/lib/chevre/repo/order.d.ts +3 -7
- package/lib/chevre/repo/order.js +56 -26
- package/lib/chevre/repo/orderInTransaction.d.ts +50 -33
- package/lib/chevre/repo/orderInTransaction.js +109 -73
- package/lib/chevre/repo/orderNumber.d.ts +4 -0
- package/lib/chevre/repo/orderNumber.js +32 -60
- package/lib/chevre/repo/passport.d.ts +5 -2
- package/lib/chevre/repo/task.d.ts +1 -1
- package/lib/chevre/repo/transaction/placeOrder.d.ts +1 -6
- package/lib/chevre/repo/transaction/placeOrder.js +37 -26
- package/lib/chevre/repo/transaction.d.ts +6 -2
- package/lib/chevre/repo/transaction.js +6 -2
- package/lib/chevre/service/assetTransaction/reserve/start.d.ts +0 -2
- package/lib/chevre/service/offer/any.d.ts +3 -8
- package/lib/chevre/service/offer/any.js +7 -6
- package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.d.ts +0 -2
- package/lib/chevre/service/offer/event/authorize.d.ts +0 -4
- package/lib/chevre/service/offer/event/authorize.js +5 -6
- package/lib/chevre/service/offer/event/voidTransaction.js +29 -17
- package/lib/chevre/service/offer/event/voidTransactionByActionId.js +16 -12
- package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.d.ts +0 -6
- package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.js +10 -12
- package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.d.ts +1 -1
- package/lib/chevre/service/offer/eventServiceByCOA/authorize.js +7 -7
- package/lib/chevre/service/offer/eventServiceByCOA/changeOffers.js +21 -17
- package/lib/chevre/service/order/deleteOrder.d.ts +6 -10
- package/lib/chevre/service/order/deleteOrder.js +8 -49
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled/factory.d.ts +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.d.ts +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.d.ts +4 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.js +1 -26
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned/factory.d.ts +1 -1
- package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.js +3 -2
- package/lib/chevre/service/order/placeOrder/factory.d.ts +1 -1
- package/lib/chevre/service/order/placeOrder/factory.js +10 -8
- package/lib/chevre/service/order/placeOrder/voidAcceptedOfferIfNecessary.d.ts +1 -3
- package/lib/chevre/service/order/placeOrder/voidAcceptedOfferIfNecessary.js +3 -15
- package/lib/chevre/service/order/placeOrder.js +6 -6
- package/lib/chevre/service/order.d.ts +1 -2
- package/lib/chevre/service/order.js +1 -5
- package/lib/chevre/service/payment/any/authorize/fixOrderAsNeeded.d.ts +2 -4
- package/lib/chevre/service/payment/any/authorize/fixOrderAsNeeded.js +4 -6
- package/lib/chevre/service/payment/any/authorize.d.ts +2 -0
- package/lib/chevre/service/payment/any/publishPaymentUrl.d.ts +0 -4
- package/lib/chevre/service/payment/any/publishPaymentUrl.js +5 -8
- package/lib/chevre/service/reserve/findByCode.js +1 -1
- package/lib/chevre/service/reserve/searchByOrder.js +1 -1
- package/lib/chevre/service/task/acceptCOAOffer.js +8 -10
- package/lib/chevre/service/task/authorizePayment.js +2 -6
- package/lib/chevre/service/task/confirmReserveTransaction.js +1 -1
- package/lib/chevre/service/task/deleteTransaction.js +0 -8
- package/lib/chevre/service/task/payment/payByTask.js +1 -1
- package/lib/chevre/service/task/publishPaymentUrl.js +6 -9
- package/lib/chevre/service/taskHandler.js +0 -1
- package/lib/chevre/service/transaction/deleteTransaction.d.ts +8 -14
- package/lib/chevre/service/transaction/deleteTransaction.js +11 -117
- package/lib/chevre/service/transaction/placeOrder/confirm/factory/result.d.ts +7 -2
- package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions/sendEmailMessage.d.ts +3 -3
- package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions/sendEmailMessage.js +8 -23
- package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions.d.ts +3 -3
- package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions.js +1 -6
- package/lib/chevre/service/transaction/placeOrder/confirm.d.ts +2 -7
- package/lib/chevre/service/transaction/placeOrder/confirm.js +42 -36
- package/lib/chevre/service/transaction/placeOrder/issueOrderNumberIfNotExist.d.ts +5 -0
- package/lib/chevre/service/transaction/placeOrder/issueOrderNumberIfNotExist.js +37 -23
- package/lib/chevre/service/transaction/placeOrder/start/factory.d.ts +19 -4
- package/lib/chevre/service/transaction/placeOrder/start/factory.js +23 -12
- package/lib/chevre/service/transaction/placeOrder/start.d.ts +9 -4
- package/lib/chevre/service/transaction/placeOrder/start.js +18 -1
- package/lib/chevre/service/transaction/placeOrder/updateAgent.d.ts +0 -4
- package/lib/chevre/service/transaction/placeOrder/updateAgent.js +20 -22
- package/lib/chevre/service/transaction/placeOrder.d.ts +1 -2
- package/lib/chevre/service/transaction/placeOrder.js +1 -3
- package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +2 -37
- package/lib/chevre/service/transaction/returnOrder/potentialActions/sendEmailMessage.d.ts +2 -2
- package/lib/chevre/service/transaction/returnOrder/potentialActions/sendEmailMessage.js +3 -18
- package/lib/chevre/service/transaction/returnOrder/potentialActions.d.ts +0 -1
- package/lib/chevre/service/transaction/returnOrder/potentialActions.js +0 -4
- package/lib/chevre/service/transaction/returnOrder/preStart.js +1 -1
- package/lib/chevre/service/transaction/returnOrder.d.ts +0 -2
- package/lib/chevre/service/transaction/returnOrder.js +13 -12
- package/lib/chevre/service/validation/validateOrder.js +1 -1
- package/lib/chevre/service.d.ts +0 -2
- package/lib/chevre/service.js +0 -2
- package/package.json +2 -2
- package/lib/chevre/factory/order.d.ts +0 -2
- package/lib/chevre/factory/order.js +0 -5
- package/lib/chevre/service/order/placeOrderWithoutTransaction.d.ts +0 -22
- package/lib/chevre/service/order/placeOrderWithoutTransaction.js +0 -51
- package/lib/chevre/service/task/deletePerson.d.ts +0 -6
- package/lib/chevre/service/task/deletePerson.js +0 -465
|
@@ -4,14 +4,20 @@ type ISendableEmailMessage = factory.action.transfer.send.message.email.IObjectA
|
|
|
4
4
|
identifier: string;
|
|
5
5
|
name: string;
|
|
6
6
|
};
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* 注文取引確定時の指定テンプレートで利用可能な注文変数
|
|
9
|
+
*/
|
|
10
|
+
type IOrderAsCreateEmailParams = Pick<factory.order.IOrder, 'orderNumber' | 'confirmationNumber' | 'price'> & {
|
|
11
|
+
customer: Pick<factory.order.ICustomer, 'givenName' | 'familyName' | 'email' | 'typeOf'>;
|
|
12
|
+
seller: Pick<factory.order.ISeller, 'name' | 'typeOf'>;
|
|
13
|
+
};
|
|
8
14
|
/**
|
|
9
15
|
* 注文配送メッセージを作成する
|
|
10
16
|
*/
|
|
11
17
|
declare function createSendOrderMessage(params: {
|
|
12
18
|
order: IOrderAsCreateEmailParams;
|
|
13
19
|
email?: factory.creativeWork.message.email.ICustomization;
|
|
14
|
-
emailMessage?:
|
|
20
|
+
emailMessage?: never;
|
|
15
21
|
index: number;
|
|
16
22
|
}, setting: Pick<ISetting, 'defaultSenderEmail'>): Promise<ISendableEmailMessage>;
|
|
17
23
|
/**
|
|
@@ -20,7 +26,7 @@ declare function createSendOrderMessage(params: {
|
|
|
20
26
|
declare function createReturnOrderMessage(params: {
|
|
21
27
|
order: IOrderAsCreateEmailParams;
|
|
22
28
|
email?: factory.creativeWork.message.email.ICustomization;
|
|
23
|
-
emailMessage?:
|
|
29
|
+
emailMessage?: never;
|
|
24
30
|
index: number;
|
|
25
31
|
}, setting: Pick<ISetting, 'defaultSenderEmail'>): Promise<ISendableEmailMessage>;
|
|
26
32
|
/**
|
|
@@ -31,4 +37,4 @@ declare function createRefundMessage(params: {
|
|
|
31
37
|
email?: factory.creativeWork.message.email.ICustomization;
|
|
32
38
|
paymentMethodId: string;
|
|
33
39
|
}, setting: Pick<ISetting, 'defaultSenderEmail'>): Promise<ISendableEmailMessage>;
|
|
34
|
-
export { createSendOrderMessage, createReturnOrderMessage, createRefundMessage };
|
|
40
|
+
export { createSendOrderMessage, createReturnOrderMessage, createRefundMessage, IOrderAsCreateEmailParams };
|
|
@@ -12,7 +12,6 @@ const factory_1 = require("./factory");
|
|
|
12
12
|
async function createEmailMessageText(params) {
|
|
13
13
|
const emailTemplate = params.email?.template;
|
|
14
14
|
const emailText = params.email?.text;
|
|
15
|
-
const emailMessageTextByDB = params.emailMessage?.text;
|
|
16
15
|
let emailMessageText;
|
|
17
16
|
if (typeof emailText === 'string') {
|
|
18
17
|
emailMessageText = emailText;
|
|
@@ -28,26 +27,12 @@ async function createEmailMessageText(params) {
|
|
|
28
27
|
});
|
|
29
28
|
});
|
|
30
29
|
}
|
|
31
|
-
else if (typeof emailMessageTextByDB === 'string') {
|
|
32
|
-
// デフォルトEメールメッセージを適用する
|
|
33
|
-
emailMessageText = await new Promise((resolve, reject) => {
|
|
34
|
-
(0, pug_1.render)(emailMessageTextByDB, { order: params.order }, (err, message) => {
|
|
35
|
-
if (err instanceof Error) {
|
|
36
|
-
reject(new factory_1.factory.errors.Argument('emailMessage.text', err.message));
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
resolve(message);
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
30
|
else {
|
|
44
31
|
emailMessageText = `orderNumber: ${params.order.orderNumber}`;
|
|
45
32
|
}
|
|
46
33
|
return emailMessageText;
|
|
47
34
|
}
|
|
48
35
|
async function createEmailMessageAbout(params) {
|
|
49
|
-
const abouyIdentifierByDB = params.emailMessage?.about.identifier;
|
|
50
|
-
const abouyNameByDB = params.emailMessage?.about.name;
|
|
51
36
|
let about;
|
|
52
37
|
if (typeof params.email?.about === 'string') {
|
|
53
38
|
// aboutをStringで指定された場合
|
|
@@ -66,23 +51,6 @@ async function createEmailMessageAbout(params) {
|
|
|
66
51
|
name: params.email.about.name
|
|
67
52
|
};
|
|
68
53
|
}
|
|
69
|
-
else if (typeof abouyIdentifierByDB === 'string' && typeof abouyNameByDB === 'string') {
|
|
70
|
-
// デフォルトEメールメッセージを適用する
|
|
71
|
-
const aboutName = await new Promise((resolve, reject) => {
|
|
72
|
-
(0, pug_1.render)(abouyNameByDB, { order: params.order }, (err, message) => {
|
|
73
|
-
if (err instanceof Error) {
|
|
74
|
-
reject(new factory_1.factory.errors.Argument('emailMessage.about.name', err.message));
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
resolve(message);
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
about = {
|
|
81
|
-
typeOf: 'Thing',
|
|
82
|
-
identifier: abouyIdentifierByDB,
|
|
83
|
-
name: aboutName
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
54
|
else {
|
|
87
55
|
// aboutの指定がない場合
|
|
88
56
|
about = {
|
|
@@ -97,44 +65,59 @@ function createEmailMessageSender(params, setting) {
|
|
|
97
65
|
if (typeof setting.defaultSenderEmail !== 'string') {
|
|
98
66
|
throw new factory_1.factory.errors.NotFound('setting.defaultSenderEmail');
|
|
99
67
|
}
|
|
68
|
+
const defaultSellerName = (typeof params.order.seller.name === 'string') ? params.order.seller.name : params.order.seller.typeOf;
|
|
100
69
|
return {
|
|
101
70
|
typeOf: params.order.seller.typeOf,
|
|
102
71
|
name: (typeof params.email?.sender?.name === 'string')
|
|
103
72
|
? params.email.sender.name
|
|
104
|
-
:
|
|
105
|
-
? params.order.seller.name
|
|
106
|
-
: String(params.order.seller.id),
|
|
107
|
-
// email: settings.defaultSenderEmail
|
|
73
|
+
: defaultSellerName,
|
|
108
74
|
email: setting.defaultSenderEmail
|
|
109
75
|
};
|
|
110
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* pug templateに渡す変数を確実に最小化する
|
|
79
|
+
*/
|
|
80
|
+
function minimizeOrderAsCreateEmailParams(order) {
|
|
81
|
+
const { confirmationNumber, orderNumber, price, customer, seller } = order;
|
|
82
|
+
const defaultToRecipientEmail = customer.email;
|
|
83
|
+
if (typeof defaultToRecipientEmail !== 'string' || defaultToRecipientEmail === '') {
|
|
84
|
+
throw new factory_1.factory.errors.Argument('order', 'order.customer.email undefined');
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
customer: {
|
|
88
|
+
email: defaultToRecipientEmail,
|
|
89
|
+
typeOf: customer.typeOf,
|
|
90
|
+
...((typeof customer.givenName === 'string') && { givenName: customer.givenName }),
|
|
91
|
+
...((typeof customer.familyName === 'string') && { familyName: customer.familyName })
|
|
92
|
+
},
|
|
93
|
+
seller: { name: seller.name, typeOf: seller.typeOf },
|
|
94
|
+
orderNumber,
|
|
95
|
+
confirmationNumber,
|
|
96
|
+
price
|
|
97
|
+
};
|
|
98
|
+
}
|
|
111
99
|
/**
|
|
112
100
|
* 注文配送メッセージを作成する
|
|
113
101
|
*/
|
|
114
102
|
async function createSendOrderMessage(params, setting) {
|
|
103
|
+
const minimizedOrder = minimizeOrderAsCreateEmailParams(params.order);
|
|
115
104
|
const emailMessageText = await createEmailMessageText({
|
|
116
|
-
order:
|
|
105
|
+
order: minimizedOrder,
|
|
117
106
|
email: params.email,
|
|
118
|
-
emailMessage: params.emailMessage
|
|
119
107
|
});
|
|
120
108
|
const about = await createEmailMessageAbout({
|
|
121
|
-
order: params.order,
|
|
122
109
|
email: params.email,
|
|
123
|
-
emailMessage: params.emailMessage,
|
|
124
110
|
aboutIdentifier: factory_1.factory.creativeWork.message.email.AboutIdentifier.OnOrderSent,
|
|
125
111
|
defaultName: 'Order Delivered'
|
|
126
112
|
});
|
|
127
|
-
const defaultToRecipientEmail =
|
|
128
|
-
|
|
129
|
-
throw new factory_1.factory.errors.Argument('order', 'order.customer.email undefined');
|
|
130
|
-
}
|
|
131
|
-
const defaultRecipientName = `${params.order.customer.familyName} ${params.order.customer.givenName}`;
|
|
113
|
+
const defaultToRecipientEmail = minimizedOrder.customer.email;
|
|
114
|
+
const defaultRecipientName = `${minimizedOrder.customer.familyName} ${minimizedOrder.customer.givenName}`;
|
|
132
115
|
const sender = createEmailMessageSender(params, setting);
|
|
133
116
|
const toRecipientCustomization = params.email?.toRecipient;
|
|
134
117
|
const toRecipient = (Array.isArray(toRecipientCustomization))
|
|
135
118
|
? toRecipientCustomization.map((customizedRecipient) => {
|
|
136
119
|
return {
|
|
137
|
-
typeOf:
|
|
120
|
+
typeOf: minimizedOrder.customer.typeOf,
|
|
138
121
|
name: (typeof customizedRecipient.name === 'string')
|
|
139
122
|
? customizedRecipient.name
|
|
140
123
|
: defaultRecipientName,
|
|
@@ -144,7 +127,7 @@ async function createSendOrderMessage(params, setting) {
|
|
|
144
127
|
};
|
|
145
128
|
})
|
|
146
129
|
: [{
|
|
147
|
-
typeOf:
|
|
130
|
+
typeOf: minimizedOrder.customer.typeOf,
|
|
148
131
|
name: (typeof toRecipientCustomization?.name === 'string')
|
|
149
132
|
? toRecipientCustomization.name
|
|
150
133
|
: defaultRecipientName,
|
|
@@ -154,8 +137,8 @@ async function createSendOrderMessage(params, setting) {
|
|
|
154
137
|
}];
|
|
155
138
|
return {
|
|
156
139
|
typeOf: factory_1.factory.creativeWorkType.EmailMessage,
|
|
157
|
-
identifier: `${about.identifier}:${
|
|
158
|
-
name: `${about.identifier}:${
|
|
140
|
+
identifier: `${about.identifier}:${minimizedOrder.orderNumber}:${params.index}`,
|
|
141
|
+
name: `${about.identifier}:${minimizedOrder.orderNumber}:${params.index}`,
|
|
159
142
|
sender: sender,
|
|
160
143
|
toRecipient: toRecipient,
|
|
161
144
|
about: about,
|
|
@@ -166,29 +149,24 @@ async function createSendOrderMessage(params, setting) {
|
|
|
166
149
|
* 注文返品メッセージを作成する
|
|
167
150
|
*/
|
|
168
151
|
async function createReturnOrderMessage(params, setting) {
|
|
152
|
+
const minimizedOrder = minimizeOrderAsCreateEmailParams(params.order);
|
|
169
153
|
const emailMessageText = await createEmailMessageText({
|
|
170
|
-
order:
|
|
154
|
+
order: minimizedOrder,
|
|
171
155
|
email: params.email,
|
|
172
|
-
emailMessage: params.emailMessage
|
|
173
156
|
});
|
|
174
157
|
const about = await createEmailMessageAbout({
|
|
175
|
-
order: params.order,
|
|
176
158
|
email: params.email,
|
|
177
|
-
emailMessage: params.emailMessage,
|
|
178
159
|
aboutIdentifier: factory_1.factory.creativeWork.message.email.AboutIdentifier.OnOrderReturned,
|
|
179
160
|
defaultName: 'Order Returned'
|
|
180
161
|
});
|
|
181
|
-
const defaultToRecipientEmail =
|
|
182
|
-
|
|
183
|
-
throw new factory_1.factory.errors.Argument('order', 'order.customer.email undefined');
|
|
184
|
-
}
|
|
185
|
-
const defaultRecipientName = `${params.order.customer.familyName} ${params.order.customer.givenName}`;
|
|
162
|
+
const defaultToRecipientEmail = minimizedOrder.customer.email;
|
|
163
|
+
const defaultRecipientName = `${minimizedOrder.customer.familyName} ${minimizedOrder.customer.givenName}`;
|
|
186
164
|
const sender = createEmailMessageSender(params, setting);
|
|
187
165
|
const toRecipientCustomization = params.email?.toRecipient;
|
|
188
166
|
const toRecipient = (Array.isArray(toRecipientCustomization))
|
|
189
167
|
? toRecipientCustomization.map((customizedRecipient) => {
|
|
190
168
|
return {
|
|
191
|
-
typeOf:
|
|
169
|
+
typeOf: minimizedOrder.customer.typeOf,
|
|
192
170
|
name: (typeof customizedRecipient.name === 'string')
|
|
193
171
|
? customizedRecipient.name
|
|
194
172
|
: defaultRecipientName,
|
|
@@ -198,7 +176,7 @@ async function createReturnOrderMessage(params, setting) {
|
|
|
198
176
|
};
|
|
199
177
|
})
|
|
200
178
|
: [{
|
|
201
|
-
typeOf:
|
|
179
|
+
typeOf: minimizedOrder.customer.typeOf,
|
|
202
180
|
name: (typeof toRecipientCustomization?.name === 'string')
|
|
203
181
|
? toRecipientCustomization.name
|
|
204
182
|
: defaultRecipientName,
|
|
@@ -208,8 +186,8 @@ async function createReturnOrderMessage(params, setting) {
|
|
|
208
186
|
}];
|
|
209
187
|
return {
|
|
210
188
|
typeOf: factory_1.factory.creativeWorkType.EmailMessage,
|
|
211
|
-
identifier: `${about.identifier}:${
|
|
212
|
-
name: `${about.identifier}:${
|
|
189
|
+
identifier: `${about.identifier}:${minimizedOrder.orderNumber}:${params.index}`,
|
|
190
|
+
name: `${about.identifier}:${minimizedOrder.orderNumber}:${params.index}`,
|
|
213
191
|
sender: sender,
|
|
214
192
|
toRecipient: toRecipient,
|
|
215
193
|
about: about,
|
|
@@ -220,27 +198,24 @@ async function createReturnOrderMessage(params, setting) {
|
|
|
220
198
|
* 返金メッセージを作成する
|
|
221
199
|
*/
|
|
222
200
|
async function createRefundMessage(params, setting) {
|
|
201
|
+
const minimizedOrder = minimizeOrderAsCreateEmailParams(params.order);
|
|
223
202
|
const emailMessageText = await createEmailMessageText({
|
|
224
|
-
order:
|
|
203
|
+
order: minimizedOrder,
|
|
225
204
|
email: params.email
|
|
226
205
|
});
|
|
227
206
|
const about = await createEmailMessageAbout({
|
|
228
|
-
order: params.order,
|
|
229
207
|
email: params.email,
|
|
230
208
|
aboutIdentifier: factory_1.factory.creativeWork.message.email.AboutIdentifier.OnOrderRefunded,
|
|
231
209
|
defaultName: 'Refunded'
|
|
232
210
|
});
|
|
233
|
-
const defaultToRecipientEmail =
|
|
234
|
-
|
|
235
|
-
throw new factory_1.factory.errors.Argument('order', 'order.customer.email undefined');
|
|
236
|
-
}
|
|
237
|
-
const defaultRecipientName = `${params.order.customer.familyName} ${params.order.customer.givenName}`;
|
|
211
|
+
const defaultToRecipientEmail = minimizedOrder.customer.email;
|
|
212
|
+
const defaultRecipientName = `${minimizedOrder.customer.familyName} ${minimizedOrder.customer.givenName}`;
|
|
238
213
|
const sender = createEmailMessageSender(params, setting);
|
|
239
214
|
const toRecipientCustomization = params.email?.toRecipient;
|
|
240
215
|
const toRecipient = (Array.isArray(toRecipientCustomization))
|
|
241
216
|
? toRecipientCustomization.map((customizedRecipient) => {
|
|
242
217
|
return {
|
|
243
|
-
typeOf:
|
|
218
|
+
typeOf: minimizedOrder.customer.typeOf,
|
|
244
219
|
name: (typeof customizedRecipient.name === 'string')
|
|
245
220
|
? customizedRecipient.name
|
|
246
221
|
: defaultRecipientName,
|
|
@@ -250,7 +225,7 @@ async function createRefundMessage(params, setting) {
|
|
|
250
225
|
};
|
|
251
226
|
})
|
|
252
227
|
: [{
|
|
253
|
-
typeOf:
|
|
228
|
+
typeOf: minimizedOrder.customer.typeOf,
|
|
254
229
|
name: (typeof toRecipientCustomization?.name === 'string')
|
|
255
230
|
? toRecipientCustomization.name
|
|
256
231
|
: defaultRecipientName,
|
|
@@ -260,8 +235,8 @@ async function createRefundMessage(params, setting) {
|
|
|
260
235
|
}];
|
|
261
236
|
return {
|
|
262
237
|
typeOf: factory_1.factory.creativeWorkType.EmailMessage,
|
|
263
|
-
identifier: `${about.identifier}:${
|
|
264
|
-
name: `${about.identifier}:${
|
|
238
|
+
identifier: `${about.identifier}:${minimizedOrder.orderNumber}:${params.paymentMethodId}`,
|
|
239
|
+
name: `${about.identifier}:${minimizedOrder.orderNumber}:${params.paymentMethodId}`,
|
|
265
240
|
sender: sender,
|
|
266
241
|
toRecipient: toRecipient,
|
|
267
242
|
about: about,
|
|
@@ -23,9 +23,7 @@ export declare class AcceptedOfferRepo extends AcceptedOfferInReserveRepo {
|
|
|
23
23
|
/**
|
|
24
24
|
* 索条件を最小化(2026-06-05~)
|
|
25
25
|
*/
|
|
26
|
-
params: Pick<factory.order.ISearchConditions, 'limit' | 'orderNumbers' | 'page' | 'project' | 'provider' | 'sort' | 'orderDate'>, projection: IProjection4searchWithUnwoundAcceptedOffers
|
|
27
|
-
noName: boolean;
|
|
28
|
-
}): Promise<(factory.order.IOrder & {
|
|
26
|
+
params: Pick<factory.order.ISearchConditions, 'limit' | 'orderNumbers' | 'page' | 'project' | 'provider' | 'sort' | 'orderDate'>, projection: IProjection4searchWithUnwoundAcceptedOffers): Promise<(factory.order.IOrder & {
|
|
29
27
|
acceptedOffers: [IAcceptedOffer];
|
|
30
28
|
_id?: never;
|
|
31
29
|
})[]>;
|
|
@@ -66,8 +64,6 @@ export declare class AcceptedOfferRepo extends AcceptedOfferInReserveRepo {
|
|
|
66
64
|
reservedTicket?: never;
|
|
67
65
|
};
|
|
68
66
|
};
|
|
69
|
-
}, options: {
|
|
70
|
-
noName: boolean;
|
|
71
67
|
}): Promise<Pick<IAcceptedOffer, 'id' | 'itemOffered' | 'offeredThrough' | 'priceSpecification' | 'serialNumber' | 'typeOf'>[]>;
|
|
72
68
|
/**
|
|
73
69
|
* 注文オファーをsliceして検索する(2024-01-10~)
|
|
@@ -24,7 +24,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
24
24
|
/**
|
|
25
25
|
* 索条件を最小化(2026-06-05~)
|
|
26
26
|
*/
|
|
27
|
-
params, projection
|
|
27
|
+
params, projection) {
|
|
28
28
|
const conditions = order_2.OrderRepo.CREATE_MONGO_CONDITIONS(params);
|
|
29
29
|
const aggregate = this.orderModel.aggregate();
|
|
30
30
|
// unwind->matchでは遅い
|
|
@@ -63,7 +63,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
63
63
|
const reservationNumbers = [...new Set(orders.map((order) => String(order.acceptedOffers[0].serialNumber)))];
|
|
64
64
|
let acceptedOffersByReserveTransaction = [];
|
|
65
65
|
if (reservationNumbers.length > 0) {
|
|
66
|
-
acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers }
|
|
66
|
+
acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers });
|
|
67
67
|
}
|
|
68
68
|
return orders.map((order) => {
|
|
69
69
|
const acceptedOffer = order.acceptedOffers[0];
|
|
@@ -136,7 +136,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
136
136
|
* 注文オファーを展開して検索する
|
|
137
137
|
* 注文番号指定で1注文ドキュメントから参照する想定
|
|
138
138
|
*/
|
|
139
|
-
async searchAcceptedOffersByOrderNumber(filter
|
|
139
|
+
async searchAcceptedOffersByOrderNumber(filter) {
|
|
140
140
|
/**
|
|
141
141
|
* unwind前に1ドキュメントを特定するためのstage
|
|
142
142
|
*/
|
|
@@ -183,7 +183,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
183
183
|
.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
184
184
|
.exec();
|
|
185
185
|
// 予約取引を参照(2026-05-18~)
|
|
186
|
-
return this.addAcceptedOffersDetails(acceptedOffers
|
|
186
|
+
return this.addAcceptedOffersDetails(acceptedOffers);
|
|
187
187
|
}
|
|
188
188
|
/**
|
|
189
189
|
* 注文オファーをsliceして検索する(2024-01-10~)
|
|
@@ -210,7 +210,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
210
210
|
const { acceptedOffers, numAcceptedOffers } = result;
|
|
211
211
|
// 予約取引を参照(2026-05-18~)
|
|
212
212
|
return {
|
|
213
|
-
acceptedOffers: await this.addAcceptedOffersDetails(acceptedOffers
|
|
213
|
+
acceptedOffers: await this.addAcceptedOffersDetails(acceptedOffers),
|
|
214
214
|
numAcceptedOffers
|
|
215
215
|
};
|
|
216
216
|
}
|
|
@@ -22,13 +22,9 @@ export declare class AcceptedOfferInReserveRepo {
|
|
|
22
22
|
* 予約番号リスト
|
|
23
23
|
*/
|
|
24
24
|
reservationNumbers: string[];
|
|
25
|
-
}, options: {
|
|
26
|
-
noName: boolean;
|
|
27
25
|
}): Promise<IAcceptedOfferByReserveTransaction[]>;
|
|
28
26
|
/**
|
|
29
27
|
* 予約取引からオファー詳細情報を付加する
|
|
30
28
|
*/
|
|
31
|
-
protected addAcceptedOffersDetails(acceptedOffers: IAcceptedOffer[]
|
|
32
|
-
noName: boolean;
|
|
33
|
-
}): Promise<IAcceptedOffer[]>;
|
|
29
|
+
protected addAcceptedOffersDetails(acceptedOffers: IAcceptedOffer[]): Promise<IAcceptedOffer[]>;
|
|
34
30
|
}
|
|
@@ -20,7 +20,7 @@ class AcceptedOfferInReserveRepo {
|
|
|
20
20
|
/**
|
|
21
21
|
* 予約番号指定で予約取引から注文オファーを生成する
|
|
22
22
|
*/
|
|
23
|
-
async findAcceptedOffersByReservationNumbers(params
|
|
23
|
+
async findAcceptedOffersByReservationNumbers(params) {
|
|
24
24
|
const { reservationNumbers } = params;
|
|
25
25
|
if (!Array.isArray(reservationNumbers) || reservationNumbers.length === 0) {
|
|
26
26
|
throw new factory_1.factory.errors.ArgumentNull('reservationNumbers');
|
|
@@ -35,13 +35,13 @@ class AcceptedOfferInReserveRepo {
|
|
|
35
35
|
.exec();
|
|
36
36
|
debug('findSubReservationsByReservationNumbers: reservationNumbers.length === reserveTransactions.length?', reservationNumbers.length === reserveTransactions.length);
|
|
37
37
|
return reserveTransactions.reduce((a, b) => {
|
|
38
|
-
return [...a, ...(0, reserveTransaction2itemOffered_1.reserveTransaction2itemOffered)(b
|
|
38
|
+
return [...a, ...(0, reserveTransaction2itemOffered_1.reserveTransaction2itemOffered)(b)];
|
|
39
39
|
}, []);
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
42
|
* 予約取引からオファー詳細情報を付加する
|
|
43
43
|
*/
|
|
44
|
-
async addAcceptedOffersDetails(acceptedOffers
|
|
44
|
+
async addAcceptedOffersDetails(acceptedOffers) {
|
|
45
45
|
const offeredThroughIdentifier = acceptedOffers.at(0)?.offeredThrough?.identifier;
|
|
46
46
|
if (offeredThroughIdentifier === factory_1.factory.service.webAPI.Identifier.COA) {
|
|
47
47
|
// COAでは予約取引を参照しない
|
|
@@ -50,7 +50,7 @@ class AcceptedOfferInReserveRepo {
|
|
|
50
50
|
const reservationNumbers = [...new Set(acceptedOffers.map((acceptedOffer) => String(acceptedOffer.serialNumber)))];
|
|
51
51
|
let acceptedOffersByReserveTransaction = [];
|
|
52
52
|
if (reservationNumbers.length > 0) {
|
|
53
|
-
acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers }
|
|
53
|
+
acceptedOffersByReserveTransaction = await this.findAcceptedOffersByReservationNumbers({ reservationNumbers });
|
|
54
54
|
}
|
|
55
55
|
return acceptedOffers.map((acceptedOffer) => {
|
|
56
56
|
const acceptedOfferByReserveTransaction = acceptedOffersByReserveTransaction.find(((offer) => offer.itemOffered.id === acceptedOffer.itemOffered.id));
|
|
@@ -1,21 +1,33 @@
|
|
|
1
|
-
import type { Connection } from 'mongoose';
|
|
1
|
+
import type { Connection, FilterQuery } from 'mongoose';
|
|
2
|
+
import { IDocType } from './mongoose/schemas/emailMessages';
|
|
2
3
|
import { factory } from '../factory';
|
|
3
|
-
export type IEmailMessage =
|
|
4
|
+
export type IEmailMessage = IDocType & {
|
|
5
|
+
id: string;
|
|
6
|
+
};
|
|
4
7
|
export interface ISearchConditions {
|
|
5
8
|
limit?: number;
|
|
6
9
|
page?: number;
|
|
7
|
-
sort?:
|
|
10
|
+
sort?: {
|
|
11
|
+
identifier?: factory.sortType;
|
|
12
|
+
};
|
|
8
13
|
project?: {
|
|
9
14
|
id?: {
|
|
10
15
|
$eq?: string;
|
|
11
16
|
};
|
|
12
17
|
};
|
|
18
|
+
id?: {
|
|
19
|
+
$eq?: string;
|
|
20
|
+
};
|
|
13
21
|
identifier?: {
|
|
14
22
|
$eq?: string;
|
|
15
23
|
};
|
|
16
24
|
about?: {
|
|
17
25
|
identifier?: {
|
|
18
|
-
|
|
26
|
+
/**
|
|
27
|
+
* 現時点でOnEventStatusChangedしかサポートしていない
|
|
28
|
+
* 2026-06-18
|
|
29
|
+
*/
|
|
30
|
+
$eq?: factory.creativeWork.message.email.AboutIdentifier.OnEventStatusChanged;
|
|
19
31
|
};
|
|
20
32
|
};
|
|
21
33
|
}
|
|
@@ -25,12 +37,9 @@ export interface ISearchConditions {
|
|
|
25
37
|
export declare class EmailMessageRepo {
|
|
26
38
|
private readonly emailMessageModel;
|
|
27
39
|
constructor(connection: Connection);
|
|
28
|
-
static CREATE_MONGO_CONDITIONS(params: ISearchConditions):
|
|
40
|
+
static CREATE_MONGO_CONDITIONS(params: ISearchConditions): FilterQuery<IDocType>[];
|
|
29
41
|
save(params: IEmailMessage): Promise<any>;
|
|
30
|
-
|
|
31
|
-
id: string;
|
|
32
|
-
}): Promise<IEmailMessage>;
|
|
33
|
-
search(params: ISearchConditions): Promise<IEmailMessage[]>;
|
|
42
|
+
findEmailMessages(params: ISearchConditions): Promise<IEmailMessage[]>;
|
|
34
43
|
deleteById(params: {
|
|
35
44
|
id: string;
|
|
36
45
|
}): Promise<void>;
|
|
@@ -4,6 +4,17 @@ exports.EmailMessageRepo = void 0;
|
|
|
4
4
|
const emailMessages_1 = require("./mongoose/schemas/emailMessages");
|
|
5
5
|
const factory_1 = require("../factory");
|
|
6
6
|
const settings_1 = require("../settings");
|
|
7
|
+
const DEFAULT_PROJECTION = {
|
|
8
|
+
_id: 0,
|
|
9
|
+
id: { $toString: '$_id' },
|
|
10
|
+
project: 1,
|
|
11
|
+
typeOf: 1,
|
|
12
|
+
identifier: 1,
|
|
13
|
+
name: 1,
|
|
14
|
+
about: 1,
|
|
15
|
+
sender: 1,
|
|
16
|
+
text: 1,
|
|
17
|
+
};
|
|
7
18
|
/**
|
|
8
19
|
* Eメールメッセージリポジトリ
|
|
9
20
|
*/
|
|
@@ -13,28 +24,24 @@ class EmailMessageRepo {
|
|
|
13
24
|
this.emailMessageModel = connection.model(emailMessages_1.modelName, (0, emailMessages_1.createSchema)());
|
|
14
25
|
}
|
|
15
26
|
static CREATE_MONGO_CONDITIONS(params) {
|
|
16
|
-
|
|
17
|
-
|
|
27
|
+
const andConditions = [
|
|
28
|
+
// { typeOf: factory.creativeWorkType.EmailMessage }
|
|
29
|
+
];
|
|
18
30
|
const projectIdEq = params.project?.id?.$eq;
|
|
19
31
|
if (typeof projectIdEq === 'string') {
|
|
20
|
-
andConditions.push({
|
|
21
|
-
|
|
22
|
-
|
|
32
|
+
andConditions.push({ 'project.id': { $eq: projectIdEq } });
|
|
33
|
+
}
|
|
34
|
+
const idEq = params.id?.$eq;
|
|
35
|
+
if (typeof idEq === 'string') {
|
|
36
|
+
andConditions.push({ _id: { $eq: idEq } });
|
|
23
37
|
}
|
|
24
38
|
const identifierEq = params.identifier?.$eq;
|
|
25
39
|
if (typeof identifierEq === 'string') {
|
|
26
|
-
andConditions.push({
|
|
27
|
-
identifier: { $eq: identifierEq }
|
|
28
|
-
});
|
|
40
|
+
andConditions.push({ identifier: { $eq: identifierEq } });
|
|
29
41
|
}
|
|
30
42
|
const aboutIdentifierEq = params.about?.identifier?.$eq;
|
|
31
43
|
if (typeof aboutIdentifierEq === 'string') {
|
|
32
|
-
andConditions.push({
|
|
33
|
-
'about.identifier': {
|
|
34
|
-
$exists: true,
|
|
35
|
-
$eq: aboutIdentifierEq
|
|
36
|
-
}
|
|
37
|
-
});
|
|
44
|
+
andConditions.push({ 'about.identifier': { $exists: true, $eq: aboutIdentifierEq } });
|
|
38
45
|
}
|
|
39
46
|
return andConditions;
|
|
40
47
|
}
|
|
@@ -45,7 +52,7 @@ class EmailMessageRepo {
|
|
|
45
52
|
}
|
|
46
53
|
else {
|
|
47
54
|
// 上書き禁止属性を除外(2022-08-24~)
|
|
48
|
-
const { id, identifier, project, typeOf, ...updateFields } = params;
|
|
55
|
+
const { id: _id, identifier: _identifier, project: _project, typeOf: _typeOf, ...updateFields } = params;
|
|
49
56
|
doc = await this.emailMessageModel.findOneAndUpdate({ _id: params.id }, updateFields, { upsert: false, new: true })
|
|
50
57
|
.exec();
|
|
51
58
|
}
|
|
@@ -54,37 +61,20 @@ class EmailMessageRepo {
|
|
|
54
61
|
}
|
|
55
62
|
return doc.toObject();
|
|
56
63
|
}
|
|
57
|
-
async
|
|
58
|
-
const doc = await this.emailMessageModel.findOne({ _id: params.id }, {
|
|
59
|
-
__v: 0,
|
|
60
|
-
createdAt: 0,
|
|
61
|
-
updatedAt: 0
|
|
62
|
-
})
|
|
63
|
-
.exec();
|
|
64
|
-
if (doc === null) {
|
|
65
|
-
throw new factory_1.factory.errors.NotFound(this.emailMessageModel.modelName);
|
|
66
|
-
}
|
|
67
|
-
return doc.toObject();
|
|
68
|
-
}
|
|
69
|
-
async search(params) {
|
|
64
|
+
async findEmailMessages(params) {
|
|
70
65
|
const conditions = EmailMessageRepo.CREATE_MONGO_CONDITIONS(params);
|
|
71
|
-
const query = this.emailMessageModel.find({ $and: conditions },
|
|
72
|
-
__v: 0,
|
|
73
|
-
createdAt: 0,
|
|
74
|
-
updatedAt: 0
|
|
75
|
-
});
|
|
66
|
+
const query = this.emailMessageModel.find({ $and: conditions }, DEFAULT_PROJECTION);
|
|
76
67
|
if (typeof params.limit === 'number' && params.limit > 0) {
|
|
77
68
|
const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
|
|
78
69
|
query.limit(params.limit)
|
|
79
70
|
.skip(params.limit * (page - 1));
|
|
80
71
|
}
|
|
81
|
-
/* istanbul ignore else */
|
|
82
72
|
if (params.sort !== undefined) {
|
|
83
73
|
query.sort(params.sort);
|
|
84
74
|
}
|
|
85
75
|
return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
86
|
-
.
|
|
87
|
-
.
|
|
76
|
+
.lean()
|
|
77
|
+
.exec();
|
|
88
78
|
}
|
|
89
79
|
async deleteById(params) {
|
|
90
80
|
await this.emailMessageModel.findOneAndDelete({ _id: { $eq: params.id } }, { projection: { _id: 1 } })
|
|
@@ -3,7 +3,5 @@ type IAcceptedOfferByReserveTransaction = Pick<factory.order.IOptimizedAcceptedO
|
|
|
3
3
|
/**
|
|
4
4
|
* 予約取引を注文のitemOfferedへ変換する
|
|
5
5
|
*/
|
|
6
|
-
declare function reserveTransaction2itemOffered(params: Pick<factory.assetTransaction.reserve.ITransaction, 'object'
|
|
7
|
-
noName: boolean;
|
|
8
|
-
}): IAcceptedOfferByReserveTransaction[];
|
|
6
|
+
declare function reserveTransaction2itemOffered(params: Pick<factory.assetTransaction.reserve.ITransaction, 'object'>): IAcceptedOfferByReserveTransaction[];
|
|
9
7
|
export { IAcceptedOfferByReserveTransaction, reserveTransaction2itemOffered };
|
|
@@ -38,8 +38,7 @@ function createReservedTicket(reservedTicket) {
|
|
|
38
38
|
/**
|
|
39
39
|
* 予約取引を注文のitemOfferedへ変換する
|
|
40
40
|
*/
|
|
41
|
-
function reserveTransaction2itemOffered(params
|
|
42
|
-
const { noName } = options;
|
|
41
|
+
function reserveTransaction2itemOffered(params) {
|
|
43
42
|
const { object } = params;
|
|
44
43
|
// subReservationは配列のはず
|
|
45
44
|
if (!Array.isArray(object.subReservation)) {
|
|
@@ -70,7 +69,7 @@ function reserveTransaction2itemOffered(params, options) {
|
|
|
70
69
|
return {
|
|
71
70
|
itemOffered: reservationByReserveTransaction,
|
|
72
71
|
...((price !== undefined) && { priceSpecification: price }),
|
|
73
|
-
...((!noName && reservedTicket.ticketType.name !== undefined) && { name: reservedTicket.ticketType.name })
|
|
72
|
+
// ...((!noName && reservedTicket.ticketType.name !== undefined) && { name: reservedTicket.ticketType.name }) // 完全廃止(2026-06-19~)
|
|
74
73
|
};
|
|
75
74
|
});
|
|
76
75
|
}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { IndexDefinition, IndexOptions, Model, Schema, SchemaDefinition } from 'mongoose';
|
|
2
2
|
import { IVirtuals } from '../virtuals';
|
|
3
3
|
import { factory } from '../../../factory';
|
|
4
|
-
type IDocType = factory.creativeWork.message.email.ICreativeWork
|
|
4
|
+
type IDocType = Pick<factory.creativeWork.message.email.ICreativeWork, 'identifier' | 'name' | 'project' | 'sender' | 'text' | 'typeOf'> & {
|
|
5
|
+
about: Pick<factory.creativeWork.message.email.IAbout, 'name' | 'typeOf'> & {
|
|
6
|
+
/**
|
|
7
|
+
* 現時点でOnEventStatusChangedしかサポートしていない
|
|
8
|
+
* 2026-06-18
|
|
9
|
+
*/
|
|
10
|
+
identifier: factory.creativeWork.message.email.AboutIdentifier.OnEventStatusChanged;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
5
13
|
type IModel = Model<IDocType, Record<string, never>, Record<string, never>, IVirtuals>;
|
|
6
14
|
type ISchemaDefinition = SchemaDefinition<IDocType>;
|
|
7
15
|
type ISchema = Schema<IDocType, IModel, Record<string, never>, Record<string, never>, IVirtuals, Record<string, never>, ISchemaDefinition, IDocType>;
|
|
@@ -8,12 +8,9 @@ const settings_1 = require("../../../settings");
|
|
|
8
8
|
const modelName = 'EmailMessage';
|
|
9
9
|
exports.modelName = modelName;
|
|
10
10
|
const schemaDefinition = {
|
|
11
|
-
project: mongoose_1.SchemaTypes.Mixed,
|
|
12
|
-
typeOf: {
|
|
13
|
-
|
|
14
|
-
required: true
|
|
15
|
-
},
|
|
16
|
-
identifier: String,
|
|
11
|
+
project: { type: mongoose_1.SchemaTypes.Mixed, required: true },
|
|
12
|
+
typeOf: { type: String, required: true },
|
|
13
|
+
identifier: { type: String, required: true },
|
|
17
14
|
name: mongoose_1.SchemaTypes.Mixed,
|
|
18
15
|
about: mongoose_1.SchemaTypes.Mixed,
|
|
19
16
|
sender: mongoose_1.SchemaTypes.Mixed,
|
|
@@ -54,25 +51,13 @@ function createSchema() {
|
|
|
54
51
|
return schema;
|
|
55
52
|
}
|
|
56
53
|
const indexes = [
|
|
57
|
-
// [ // discontinue(2024-08-07~)
|
|
58
|
-
// { createdAt: 1 },
|
|
59
|
-
// { name: 'searchByCreatedAt' }
|
|
60
|
-
// ],
|
|
61
|
-
// [
|
|
62
|
-
// { updatedAt: 1 },
|
|
63
|
-
// { name: 'searchByUpdatedAt' }
|
|
64
|
-
// ],
|
|
65
54
|
[
|
|
66
55
|
{ identifier: 1 },
|
|
67
|
-
{
|
|
68
|
-
name: 'searchByIdentifier'
|
|
69
|
-
}
|
|
56
|
+
{ name: 'searchByIdentifier' }
|
|
70
57
|
],
|
|
71
58
|
[
|
|
72
59
|
{ 'project.id': 1, identifier: 1 },
|
|
73
|
-
{
|
|
74
|
-
name: 'searchByProjectId'
|
|
75
|
-
}
|
|
60
|
+
{ name: 'searchByProjectId' }
|
|
76
61
|
]
|
|
77
62
|
];
|
|
78
63
|
exports.indexes = indexes;
|