@chevre/domain 26.0.0-alpha.2 → 26.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/eventEmitter/task.d.ts +8 -23
- package/lib/chevre/eventEmitter/task.js +2 -2
- package/lib/chevre/repo/adminAsyncAction.d.ts +2 -2
- package/lib/chevre/repo/adminScheduledTask.d.ts +1 -1
- package/lib/chevre/repo/adminTask.d.ts +31 -8
- package/lib/chevre/repo/adminTask.js +41 -26
- package/lib/chevre/repo/aggregateScheduledTask.d.ts +32 -0
- package/lib/chevre/repo/aggregateScheduledTask.js +136 -0
- package/lib/chevre/repo/asyncAction.d.ts +2 -2
- package/lib/chevre/repo/mongoose/schemas/setting.d.ts +1 -0
- package/lib/chevre/repo/mongoose/schemas/task.d.ts +2 -5
- package/lib/chevre/repo/mongoose/schemas/task.js +87 -96
- package/lib/chevre/repo/orderInTransaction.d.ts +0 -3
- package/lib/chevre/repo/orderInTransaction.js +30 -22
- package/lib/chevre/repo/scheduledTask.d.ts +5 -2
- package/lib/chevre/repo/scheduledTask.js +3 -25
- package/lib/chevre/repo/task.d.ts +25 -172
- package/lib/chevre/repo/task.js +19 -475
- package/lib/chevre/repo/taskDelayed.d.ts +74 -0
- package/lib/chevre/repo/taskDelayed.js +195 -0
- package/lib/chevre/repo/taskRunning.d.ts +35 -0
- package/lib/chevre/repo/taskRunning.js +89 -0
- package/lib/chevre/repository.d.ts +10 -0
- package/lib/chevre/repository.js +24 -2
- package/lib/chevre/service/aggregation/system.d.ts +10 -2
- package/lib/chevre/service/aggregation/system.js +42 -0
- package/lib/chevre/service/assetTransaction/reserve/start/factory/createStartParams.js +5 -25
- package/lib/chevre/service/asyncAction.d.ts +2 -2
- package/lib/chevre/service/asyncAction.js +1 -4
- package/lib/chevre/service/asyncActionHandler/onOperationFailed.d.ts +2 -2
- package/lib/chevre/service/asyncActionHandler/onOperationFailed.js +0 -2
- package/lib/chevre/service/asyncActionHandler.d.ts +4 -4
- package/lib/chevre/service/asyncActionHandler.js +11 -13
- package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.js +1 -1
- package/lib/chevre/service/offer/eventServiceByCOA/findAcceptAction.d.ts +0 -4
- package/lib/chevre/service/offer/eventServiceByCOA/findAcceptAction.js +19 -19
- package/lib/chevre/service/order/confirmPayTransaction.js +4 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +4 -4
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.js +2 -2
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/createSendEmailMessageTaskIfNotExist.js +2 -2
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.d.ts +2 -2
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.js +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/processOrder.js +2 -2
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.js +1 -1
- package/lib/chevre/service/payment/any/findAcceptAction.d.ts +0 -4
- package/lib/chevre/service/payment/any/findAcceptAction.js +19 -19
- package/lib/chevre/service/payment/any/findAuthorizeAction.d.ts +0 -4
- package/lib/chevre/service/payment/any/findAuthorizeAction.js +19 -19
- package/lib/chevre/service/payment/any/findCheckAction.d.ts +0 -4
- package/lib/chevre/service/payment/any/findCheckAction.js +19 -19
- package/lib/chevre/service/payment/any/publishPaymentUrl.d.ts +0 -2
- package/lib/chevre/service/payment/any/publishPaymentUrl.js +2 -2
- package/lib/chevre/service/project.d.ts +0 -3
- package/lib/chevre/service/project.js +0 -1
- package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +2 -2
- package/lib/chevre/service/scheduledTask.d.ts +1 -4
- package/lib/chevre/service/scheduledTask.js +3 -10
- package/lib/chevre/service/scheduledTaskHandler/onOperationFailed.js +1 -2
- package/lib/chevre/service/scheduledTaskHandler.js +0 -13
- package/lib/chevre/service/task/acceptCOAOffer.js +1 -14
- package/lib/chevre/service/task/authorizePayment.js +1 -7
- package/lib/chevre/service/task/checkMovieTicket.js +1 -7
- package/lib/chevre/service/task/confirmReserveTransaction.js +3 -1
- package/lib/chevre/service/task/importEventCapacitiesFromCOA.js +4 -1
- package/lib/chevre/service/task/importEventsFromCOA.js +4 -1
- package/lib/chevre/service/task/importOffersFromCOA.js +5 -5
- package/lib/chevre/service/task/publishPaymentUrl.js +2 -13
- package/lib/chevre/service/task/syncResourcesFromCOA.js +1 -5
- package/lib/chevre/service/task/voidReserveTransaction.js +5 -8
- package/lib/chevre/service/task.d.ts +3 -22
- package/lib/chevre/service/task.js +8 -40
- package/lib/chevre/service/taskHandler/onOperationFailed.d.ts +3 -2
- package/lib/chevre/service/taskHandler/onOperationFailed.js +5 -16
- package/lib/chevre/service/taskHandler.d.ts +1 -2
- package/lib/chevre/service/taskHandler.js +7 -53
- package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.d.ts +8 -4
- package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +55 -103
- package/lib/chevre/service/transaction/placeOrder/exportTasksById.d.ts +2 -0
- package/lib/chevre/service/transaction/placeOrder/exportTasksById.js +14 -10
- package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.d.ts +13 -3
- package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +48 -51
- package/lib/chevre/service/transaction/returnOrder.d.ts +2 -0
- package/lib/chevre/service/transaction/returnOrder.js +15 -13
- package/lib/chevre/service/transaction.d.ts +2 -0
- package/lib/chevre/service/transaction.js +0 -2
- package/lib/chevre/taskSettings.d.ts +4 -4
- package/package.json +2 -2
|
@@ -8,7 +8,6 @@ const settings_1 = require("../../../settings");
|
|
|
8
8
|
const modelName = 'Task';
|
|
9
9
|
exports.modelName = modelName;
|
|
10
10
|
const schemaDefinition = {
|
|
11
|
-
alternateName: String, // add(2025-03-28~)
|
|
12
11
|
identifier: String,
|
|
13
12
|
description: String, // add(2025-03-30~)
|
|
14
13
|
project: { type: mongoose_1.SchemaTypes.Mixed, required: true },
|
|
@@ -22,7 +21,8 @@ const schemaDefinition = {
|
|
|
22
21
|
executor: mongoose_1.SchemaTypes.Mixed,
|
|
23
22
|
data: mongoose_1.SchemaTypes.Mixed,
|
|
24
23
|
dateAborted: Date,
|
|
25
|
-
|
|
24
|
+
// alternateName: String, // add(2025-03-28~) // identidfier移行完了につき廃止(2026-08-07~)
|
|
25
|
+
// expires: Date // add(2024-04-23~) // 非同期アクションは移行につきexpires廃止(2026-08-05~)
|
|
26
26
|
};
|
|
27
27
|
const schemaOptions = {
|
|
28
28
|
autoIndex: settings_1.MONGO_AUTO_INDEX,
|
|
@@ -65,16 +65,17 @@ const indexes = [
|
|
|
65
65
|
{ runsAt: -1 },
|
|
66
66
|
{ name: 'searchByRunsAt-v2' }
|
|
67
67
|
],
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
68
|
+
// identifierはユニークインデックス有なので不要(2026-08-07~)
|
|
69
|
+
// [
|
|
70
|
+
// // identifier追加(2023-09-01~)
|
|
71
|
+
// { identifier: 1, runsAt: -1 },
|
|
72
|
+
// {
|
|
73
|
+
// name: 'searchByIdentifier',
|
|
74
|
+
// partialFilterExpression: {
|
|
75
|
+
// identifier: { $exists: true }
|
|
76
|
+
// }
|
|
77
|
+
// }
|
|
78
|
+
// ],
|
|
78
79
|
[
|
|
79
80
|
{ dateAborted: 1, runsAt: -1 },
|
|
80
81
|
{
|
|
@@ -93,73 +94,10 @@ const indexes = [
|
|
|
93
94
|
}
|
|
94
95
|
}
|
|
95
96
|
],
|
|
96
|
-
[
|
|
97
|
-
{ expires: 1, runsAt: -1 },
|
|
98
|
-
{
|
|
99
|
-
name: 'expires',
|
|
100
|
-
partialFilterExpression: {
|
|
101
|
-
expires: { $exists: true }
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
],
|
|
105
97
|
[
|
|
106
98
|
{ remainingNumberOfTries: 1, runsAt: -1 },
|
|
107
99
|
{ name: 'searchByRemainingNumberOfTries-v2' }
|
|
108
100
|
],
|
|
109
|
-
[
|
|
110
|
-
{ 'data.agent.id': 1, runsAt: -1 },
|
|
111
|
-
{
|
|
112
|
-
name: 'searchByDataAgentId',
|
|
113
|
-
partialFilterExpression: {
|
|
114
|
-
'data.agent.id': { $exists: true }
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
],
|
|
118
|
-
[
|
|
119
|
-
{ 'data.object.orderNumber': 1, runsAt: -1 },
|
|
120
|
-
{
|
|
121
|
-
name: 'searchByDataObjectOrderNumber',
|
|
122
|
-
partialFilterExpression: {
|
|
123
|
-
'data.object.orderNumber': { $exists: true }
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
],
|
|
127
|
-
[
|
|
128
|
-
{ 'data.object.transactionNumber': 1, runsAt: -1 },
|
|
129
|
-
{
|
|
130
|
-
name: 'searchByDataObjectTransactionNumber',
|
|
131
|
-
partialFilterExpression: {
|
|
132
|
-
'data.object.transactionNumber': { $exists: true }
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
],
|
|
136
|
-
[
|
|
137
|
-
{ 'data.object.id': 1, runsAt: -1 },
|
|
138
|
-
{
|
|
139
|
-
name: 'searchByDataObjectId',
|
|
140
|
-
partialFilterExpression: {
|
|
141
|
-
'data.object.id': { $exists: true }
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
],
|
|
145
|
-
[
|
|
146
|
-
{ 'data.purpose.id': 1, runsAt: -1 },
|
|
147
|
-
{
|
|
148
|
-
name: 'searchByDataPurposeId',
|
|
149
|
-
partialFilterExpression: {
|
|
150
|
-
'data.purpose.id': { $exists: true }
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
],
|
|
154
|
-
[
|
|
155
|
-
{ 'data.purpose.orderNumber': 1, runsAt: -1 },
|
|
156
|
-
{
|
|
157
|
-
name: 'searchByDataPurposeOrderNumber',
|
|
158
|
-
partialFilterExpression: {
|
|
159
|
-
'data.purpose.orderNumber': { $exists: true }
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
],
|
|
163
101
|
[
|
|
164
102
|
{ 'data.id': 1, runsAt: -1 },
|
|
165
103
|
{
|
|
@@ -177,6 +115,10 @@ const indexes = [
|
|
|
177
115
|
{ status: 1, runsAt: 1, name: 1 },
|
|
178
116
|
{ name: 'executeOneByNameIfExists' } // add(2025-03-08~)
|
|
179
117
|
],
|
|
118
|
+
[
|
|
119
|
+
{ status: 1, name: 1, runsAt: 1 },
|
|
120
|
+
{ name: 'runDelayedTaskByName' } // add(2026-08-05~)
|
|
121
|
+
],
|
|
180
122
|
[
|
|
181
123
|
{ status: 1, remainingNumberOfTries: 1, lastTriedAt: 1 },
|
|
182
124
|
{
|
|
@@ -195,26 +137,6 @@ const indexes = [
|
|
|
195
137
|
}
|
|
196
138
|
}
|
|
197
139
|
],
|
|
198
|
-
[
|
|
199
|
-
{ status: 1, expires: 1 },
|
|
200
|
-
{
|
|
201
|
-
name: 'makeExpiredMany',
|
|
202
|
-
partialFilterExpression: {
|
|
203
|
-
expires: { $exists: true }
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
],
|
|
207
|
-
[
|
|
208
|
-
// add unique index(2025-03-28~)
|
|
209
|
-
{ alternateName: 1 },
|
|
210
|
-
{
|
|
211
|
-
unique: true,
|
|
212
|
-
name: 'uniqueAlternateName',
|
|
213
|
-
partialFilterExpression: {
|
|
214
|
-
alternateName: { $exists: true }
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
],
|
|
218
140
|
// add unique index(dev)(2025-03-28~)
|
|
219
141
|
// add unique index(test,prod)(2026-07-08~)
|
|
220
142
|
[
|
|
@@ -226,7 +148,76 @@ const indexes = [
|
|
|
226
148
|
identifier: { $exists: true }
|
|
227
149
|
}
|
|
228
150
|
}
|
|
229
|
-
]
|
|
151
|
+
],
|
|
152
|
+
// alternateNameへのインデックスはおそらくもう不要(2026-08-07~)
|
|
153
|
+
// dev,testではインデックス削除済(2026-08-07)
|
|
154
|
+
// prodでは削除予定(2026-08-??)
|
|
155
|
+
// [
|
|
156
|
+
// // add unique index(2025-03-28~)
|
|
157
|
+
// { alternateName: 1 },
|
|
158
|
+
// {
|
|
159
|
+
// unique: true,
|
|
160
|
+
// name: 'uniqueAlternateName',
|
|
161
|
+
// partialFilterExpression: {
|
|
162
|
+
// alternateName: { $exists: true }
|
|
163
|
+
// }
|
|
164
|
+
// }
|
|
165
|
+
// ],
|
|
166
|
+
// ペイロード特定検索用はひとまず廃止(2026-08-07~)
|
|
167
|
+
// [
|
|
168
|
+
// { 'data.agent.id': 1, runsAt: -1 },
|
|
169
|
+
// {
|
|
170
|
+
// name: 'searchByDataAgentId',
|
|
171
|
+
// partialFilterExpression: {
|
|
172
|
+
// 'data.agent.id': { $exists: true }
|
|
173
|
+
// }
|
|
174
|
+
// }
|
|
175
|
+
// ],
|
|
176
|
+
// [
|
|
177
|
+
// { 'data.object.orderNumber': 1, runsAt: -1 },
|
|
178
|
+
// {
|
|
179
|
+
// name: 'searchByDataObjectOrderNumber',
|
|
180
|
+
// partialFilterExpression: {
|
|
181
|
+
// 'data.object.orderNumber': { $exists: true }
|
|
182
|
+
// }
|
|
183
|
+
// }
|
|
184
|
+
// ],
|
|
185
|
+
// [
|
|
186
|
+
// { 'data.object.transactionNumber': 1, runsAt: -1 },
|
|
187
|
+
// {
|
|
188
|
+
// name: 'searchByDataObjectTransactionNumber',
|
|
189
|
+
// partialFilterExpression: {
|
|
190
|
+
// 'data.object.transactionNumber': { $exists: true }
|
|
191
|
+
// }
|
|
192
|
+
// }
|
|
193
|
+
// ],
|
|
194
|
+
// [
|
|
195
|
+
// { 'data.object.id': 1, runsAt: -1 },
|
|
196
|
+
// {
|
|
197
|
+
// name: 'searchByDataObjectId',
|
|
198
|
+
// partialFilterExpression: {
|
|
199
|
+
// 'data.object.id': { $exists: true }
|
|
200
|
+
// }
|
|
201
|
+
// }
|
|
202
|
+
// ],
|
|
203
|
+
// [
|
|
204
|
+
// { 'data.purpose.id': 1, runsAt: -1 },
|
|
205
|
+
// {
|
|
206
|
+
// name: 'searchByDataPurposeId',
|
|
207
|
+
// partialFilterExpression: {
|
|
208
|
+
// 'data.purpose.id': { $exists: true }
|
|
209
|
+
// }
|
|
210
|
+
// }
|
|
211
|
+
// ],
|
|
212
|
+
// [
|
|
213
|
+
// { 'data.purpose.orderNumber': 1, runsAt: -1 },
|
|
214
|
+
// {
|
|
215
|
+
// name: 'searchByDataPurposeOrderNumber',
|
|
216
|
+
// partialFilterExpression: {
|
|
217
|
+
// 'data.purpose.orderNumber': { $exists: true }
|
|
218
|
+
// }
|
|
219
|
+
// }
|
|
220
|
+
// ],
|
|
230
221
|
];
|
|
231
222
|
exports.indexes = indexes;
|
|
232
223
|
/**
|
|
@@ -79,7 +79,6 @@ export interface IPaymentMethodByPaymentUrl {
|
|
|
79
79
|
*/
|
|
80
80
|
export declare class OrderInTransactionRepo extends AcceptedOfferInReserveRepo {
|
|
81
81
|
private readonly orderModel;
|
|
82
|
-
private readonly transactionModel;
|
|
83
82
|
constructor(connection: Connection);
|
|
84
83
|
createPlaceOrderIfNotExists(params: Pick<IOrderInTransaction, 'orderNumber' | 'project' | 'identifier' | 'broker' | 'seller' | 'customer'>): Promise<import("mongoose").UpdateWriteOpResult | undefined>;
|
|
85
84
|
/**
|
|
@@ -177,8 +176,6 @@ export declare class OrderInTransactionRepo extends AcceptedOfferInReserveRepo {
|
|
|
177
176
|
savePaymentMethodId(params: {
|
|
178
177
|
id: string;
|
|
179
178
|
paymentMethod: IPaymentMethodByPaymentUrl;
|
|
180
|
-
}, options: {
|
|
181
|
-
savePaymentMethodIdInTransaction: boolean;
|
|
182
179
|
}): Promise<void>;
|
|
183
180
|
/**
|
|
184
181
|
* 進行中取引に保管された採用済決済方法を検索する
|
|
@@ -5,7 +5,11 @@ exports.OrderInTransactionRepo = void 0;
|
|
|
5
5
|
const errorHandler_1 = require("../errorHandler");
|
|
6
6
|
const factory_1 = require("../factory");
|
|
7
7
|
const order_1 = require("./mongoose/schemas/order");
|
|
8
|
-
|
|
8
|
+
// import {
|
|
9
|
+
// createSchema as createTransactionSchema,
|
|
10
|
+
// IModel as ITransactionModel, modelName as transactionModelName,
|
|
11
|
+
// IDocType as ITransactionDocType
|
|
12
|
+
// } from './mongoose/schemas/transaction';
|
|
9
13
|
const acceptedOfferInReserve_1 = require("./acceptedOfferInReserve");
|
|
10
14
|
// const debug = createDebug('chevre-domain:repo:orderInTransaction');
|
|
11
15
|
/**
|
|
@@ -13,11 +17,11 @@ const acceptedOfferInReserve_1 = require("./acceptedOfferInReserve");
|
|
|
13
17
|
*/
|
|
14
18
|
class OrderInTransactionRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveRepo {
|
|
15
19
|
orderModel;
|
|
16
|
-
transactionModel;
|
|
20
|
+
// private readonly transactionModel: ITransactionModel;
|
|
17
21
|
constructor(connection) {
|
|
18
22
|
super(connection);
|
|
19
23
|
this.orderModel = connection.model(order_1.modelName, (0, order_1.createSchema)());
|
|
20
|
-
this.transactionModel = connection.model
|
|
24
|
+
// this.transactionModel = connection.model<ITransactionDocType, ITransactionModel>(transactionModelName, createTransactionSchema());
|
|
21
25
|
}
|
|
22
26
|
async createPlaceOrderIfNotExists(params) {
|
|
23
27
|
const { orderNumber, project, identifier, broker, seller, customer } = params;
|
|
@@ -284,29 +288,33 @@ class OrderInTransactionRepo extends acceptedOfferInReserve_1.AcceptedOfferInRes
|
|
|
284
288
|
* 特定の進行中取引の決済方法IDを保管する
|
|
285
289
|
* transactionsへの保管としてひとまず定義(2026-07-11~)
|
|
286
290
|
*/
|
|
287
|
-
async savePaymentMethodId(params
|
|
288
|
-
const { savePaymentMethodIdInTransaction } = options;
|
|
291
|
+
async savePaymentMethodId(params) {
|
|
289
292
|
const { paymentMethodId } = params.paymentMethod;
|
|
290
293
|
if (typeof paymentMethodId !== 'string' || paymentMethodId === '') {
|
|
291
294
|
throw new factory_1.factory.errors.ArgumentNull('paymentMethod.paymentMethodId');
|
|
292
295
|
}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
296
|
+
// savePaymentMethodIdInTransactionは廃止(2026-08-04~)
|
|
297
|
+
// if (savePaymentMethodIdInTransaction) {
|
|
298
|
+
// await this.transactionModel.findOneAndUpdate(
|
|
299
|
+
// {
|
|
300
|
+
// _id: { $eq: params.id },
|
|
301
|
+
// status: { $eq: factory.transactionStatusType.InProgress }
|
|
302
|
+
// },
|
|
303
|
+
// {
|
|
304
|
+
// $set: { 'object.paymentMethods': { paymentMethodId } }
|
|
305
|
+
// },
|
|
306
|
+
// {
|
|
307
|
+
// projection: { _id: 1 }
|
|
308
|
+
// }
|
|
309
|
+
// )
|
|
310
|
+
// .lean<{ _id: ObjectId }>()
|
|
311
|
+
// .exec()
|
|
312
|
+
// .then((doc) => {
|
|
313
|
+
// if (doc === null) {
|
|
314
|
+
// throw new factory.errors.NotFound(factory.transactionType.PlaceOrder);
|
|
315
|
+
// }
|
|
316
|
+
// });
|
|
317
|
+
// }
|
|
310
318
|
// 注文ドキュメントにも保管する(2026-07-12~)
|
|
311
319
|
await this.orderModel.findOneAndUpdate({
|
|
312
320
|
identifier: { $eq: params.id },
|
|
@@ -5,7 +5,7 @@ type ICreatingTaskKeys = 'data' | 'executionResults' | 'name' | 'numberOfTried'
|
|
|
5
5
|
/**
|
|
6
6
|
* リトライ可能なタスク作成属性
|
|
7
7
|
*/
|
|
8
|
-
type ICreatingTask = (Pick<factory.task.importEventCapacitiesFromCOA.IAttributes, ICreatingTaskKeys> | Pick<factory.task.importEventsFromCOA.IAttributes, ICreatingTaskKeys>) & {
|
|
8
|
+
type ICreatingTask = (Pick<factory.task.importEventCapacitiesFromCOA.IAttributes, ICreatingTaskKeys> | Pick<factory.task.importEventsFromCOA.IAttributes, ICreatingTaskKeys> | Pick<factory.task.deleteTransaction.IAttributes, ICreatingTaskKeys>) & {
|
|
9
9
|
expires: Date;
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
@@ -64,11 +64,14 @@ export declare class ScheduledTaskRepo {
|
|
|
64
64
|
status: factory.taskStatus.Executed | factory.taskStatus.Running | factory.taskStatus.Aborted;
|
|
65
65
|
executionResult: factory.task.IExecutionResult;
|
|
66
66
|
}): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* cron:createImportEventCapacitiesTasksでの新タスク作成前に使用する
|
|
69
|
+
*/
|
|
67
70
|
deleteTooOldReadyTasks(params: {
|
|
68
71
|
project: {
|
|
69
72
|
id: string;
|
|
70
73
|
};
|
|
71
|
-
name: factory.taskName;
|
|
74
|
+
name: factory.taskName.ImportEventCapacitiesFromCOA;
|
|
72
75
|
runsAt: {
|
|
73
76
|
$lt: Date;
|
|
74
77
|
};
|
|
@@ -40,15 +40,6 @@ class ScheduledTaskRepo {
|
|
|
40
40
|
.map((objectId) => {
|
|
41
41
|
return { id: objectId.toHexString() };
|
|
42
42
|
});
|
|
43
|
-
// イベントは発火しない
|
|
44
|
-
// if (emitImmediately) {
|
|
45
|
-
// savedTasks.forEach((savedTask) => {
|
|
46
|
-
// taskEventEmitter.emitTaskStatusChanged({
|
|
47
|
-
// id: savedTask.id,
|
|
48
|
-
// status: factory.taskStatus.Ready
|
|
49
|
-
// });
|
|
50
|
-
// });
|
|
51
|
-
// }
|
|
52
43
|
return savedTasks;
|
|
53
44
|
}
|
|
54
45
|
else {
|
|
@@ -80,7 +71,6 @@ class ScheduledTaskRepo {
|
|
|
80
71
|
if (!(params.runsAt.$lt instanceof Date)) {
|
|
81
72
|
throw new factory_1.factory.errors.Argument('runsAt.$lt', 'must be Date');
|
|
82
73
|
}
|
|
83
|
-
// const { noEmitEvent } = options;
|
|
84
74
|
const projection = {
|
|
85
75
|
_id: 0,
|
|
86
76
|
id: { $toString: '$_id' },
|
|
@@ -106,9 +96,6 @@ class ScheduledTaskRepo {
|
|
|
106
96
|
new: true,
|
|
107
97
|
projection,
|
|
108
98
|
sort: { runsAt: factory_1.factory.sortType.Ascending } // ソートは、実行日時で固定化(2026-07-31~)
|
|
109
|
-
// ...(typeof params.sort.numberOfTried === 'number' || typeof params.sort.runsAt === 'number')
|
|
110
|
-
// ? { sort: params.sort }
|
|
111
|
-
// : undefined
|
|
112
99
|
})
|
|
113
100
|
.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
114
101
|
.lean()
|
|
@@ -116,18 +103,6 @@ class ScheduledTaskRepo {
|
|
|
116
103
|
if (doc === null) {
|
|
117
104
|
return null;
|
|
118
105
|
}
|
|
119
|
-
// if (!noEmitEvent) {
|
|
120
|
-
// const changedTask: IRunningTaskByName = {
|
|
121
|
-
// id: doc.id,
|
|
122
|
-
// status: factory.taskStatus.Running,
|
|
123
|
-
// name: nameEq
|
|
124
|
-
// };
|
|
125
|
-
// taskEventEmitter.emitTaskStatusChanged(
|
|
126
|
-
// changedTask,
|
|
127
|
-
// // 現時点でタスク遅延実行ではnext指定なし(2026-07-30)
|
|
128
|
-
// // (typeof next === 'function') ? next : undefined
|
|
129
|
-
// );
|
|
130
|
-
// }
|
|
131
106
|
return doc;
|
|
132
107
|
}
|
|
133
108
|
/**
|
|
@@ -162,6 +137,9 @@ class ScheduledTaskRepo {
|
|
|
162
137
|
})
|
|
163
138
|
.exec();
|
|
164
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* cron:createImportEventCapacitiesTasksでの新タスク作成前に使用する
|
|
142
|
+
*/
|
|
165
143
|
async deleteTooOldReadyTasks(params) {
|
|
166
144
|
return this.scheduledTaskModel.deleteMany({
|
|
167
145
|
'project.id': { $eq: params.project.id },
|
|
@@ -1,28 +1,18 @@
|
|
|
1
|
-
import type { Connection
|
|
2
|
-
import { INextFunction } from '../eventEmitter/task';
|
|
1
|
+
import type { Connection } from 'mongoose';
|
|
3
2
|
import { factory } from '../factory';
|
|
4
|
-
import {
|
|
5
|
-
import type { IExecutableTask } from '../taskSettings';
|
|
6
|
-
type IKeyOfProjection = keyof factory.task.ITask<factory.taskName> | 'expires';
|
|
3
|
+
import { IDocType } from './mongoose/schemas/task';
|
|
7
4
|
/**
|
|
8
5
|
* リトライ可能なタスク作成属性
|
|
9
6
|
*/
|
|
10
7
|
type ICreatingTask = Pick<factory.task.IAttributes<factory.taskName>, 'data' | 'executionResults' | 'name' | 'numberOfTried' | 'project' | 'remainingNumberOfTries' | 'runsAt' | 'status' | 'identifier' | 'description'> & {
|
|
11
|
-
expires?:
|
|
8
|
+
expires?: never;
|
|
12
9
|
};
|
|
13
10
|
/**
|
|
14
11
|
* タスクリポジトリ
|
|
15
12
|
*/
|
|
16
13
|
export declare class TaskRepo {
|
|
17
|
-
readonly taskModel
|
|
14
|
+
private readonly taskModel;
|
|
18
15
|
constructor(connection: Connection);
|
|
19
|
-
runImmediately(params: Pick<factory.task.IAttributes<factory.taskName>, 'data' | 'name' | 'project' | 'remainingNumberOfTries' | 'runsAt'> & {
|
|
20
|
-
alternateName?: never;
|
|
21
|
-
identifier?: never;
|
|
22
|
-
expires: Date;
|
|
23
|
-
}, next: INextFunction): Promise<{
|
|
24
|
-
id: string;
|
|
25
|
-
}>;
|
|
26
16
|
saveMany(taskAttributes: ICreatingTask[]): Promise<{
|
|
27
17
|
id: string;
|
|
28
18
|
}[]>;
|
|
@@ -39,110 +29,33 @@ export declare class TaskRepo {
|
|
|
39
29
|
id: string;
|
|
40
30
|
status: factory.taskStatus;
|
|
41
31
|
} | undefined>;
|
|
32
|
+
/**
|
|
33
|
+
* イベント予約集計タスクの冗長な作成を避けるためのメソッド
|
|
34
|
+
*/
|
|
35
|
+
findReadyAggregateEventTask(params: {
|
|
36
|
+
project: {
|
|
37
|
+
id: string;
|
|
38
|
+
};
|
|
39
|
+
reservationFor: {
|
|
40
|
+
id: string;
|
|
41
|
+
};
|
|
42
|
+
}): Promise<(import("mongoose").Document<unknown, Record<string, never>, IDocType, import("./mongoose/virtuals").IVirtuals, {}> & Pick<import("@chevre/factory/lib/chevre/task").ITask | import("@chevre/factory/lib/chevre/task/confirmPayTransaction").ITask | import("@chevre/factory/lib/chevre/task/confirmReserveTransaction").ITask | import("@chevre/factory/lib/chevre/task/createAccountingReport").ITask | import("@chevre/factory/lib/chevre/task/onAssetTransactionStatusChanged").ITask | import("@chevre/factory/lib/chevre/task/onAuthorizationCreated").ITask | import("@chevre/factory/lib/chevre/task/onEventChanged").ITask | import("@chevre/factory/lib/chevre/task/onResourceDeleted").ITask | import("@chevre/factory/lib/chevre/task/onResourceUpdated").ITask | import("@chevre/factory/lib/chevre/task/onOrderPaymentCompleted").ITask | import("@chevre/factory/lib/chevre/task/placeOrder").ITask | import("@chevre/factory/lib/chevre/task/returnOrder").ITask | import("@chevre/factory/lib/chevre/task/returnPayTransaction").ITask | import("@chevre/factory/lib/chevre/task/returnReserveTransaction").ITask | import("@chevre/factory/lib/chevre/task/sendEmailMessage").ITask | import("@chevre/factory/lib/chevre/task/sendOrder").ITask | import("@chevre/factory/lib/chevre/task/triggerWebhook").ITask | import("@chevre/factory/lib/chevre/task/useReservation").ITask | import("@chevre/factory/lib/chevre/task/voidPayTransaction").ITask, "name" | "description" | "project" | "identifier" | "data" | "status" | "runsAt" | "dateAborted" | "executionResults" | "executor" | "lastTriedAt" | "remainingNumberOfTries" | "numberOfTried"> & {
|
|
43
|
+
expires?: never;
|
|
44
|
+
} & {
|
|
45
|
+
_id: import("mongoose").Types.ObjectId;
|
|
46
|
+
} & {
|
|
47
|
+
__v: number;
|
|
48
|
+
}) | null>;
|
|
42
49
|
/**
|
|
43
50
|
* タスク識別子から冪等作成する
|
|
44
51
|
* reimplement createIfNotExistByIdentifier(2025-03-28~)
|
|
52
|
+
* reimplement runTaskByIdentifier(2026-08-03~)
|
|
45
53
|
*/
|
|
46
|
-
|
|
47
|
-
alternateName
|
|
54
|
+
runTaskByIdentifier(params: ICreatingTask & {
|
|
55
|
+
alternateName?: never;
|
|
48
56
|
identifier: string;
|
|
49
57
|
expires?: never;
|
|
50
58
|
}): Promise<void>;
|
|
51
|
-
createOnAssetTransactionStatusChangedTaskIfNotExist(params: Pick<factory.task.IAttributes<factory.taskName.OnAssetTransactionStatusChanged>, 'data' | 'executionResults' | 'name' | 'numberOfTried' | 'project' | 'remainingNumberOfTries' | 'runsAt' | 'status'>): Promise<void>;
|
|
52
|
-
/**
|
|
53
|
-
* Ready -> remainingNumberOfTriesが1減る
|
|
54
|
-
* Running -> findOneするだけ
|
|
55
|
-
*/
|
|
56
|
-
executeOneById(params: {
|
|
57
|
-
id: string;
|
|
58
|
-
status: factory.taskStatus.Ready | factory.taskStatus.Running;
|
|
59
|
-
executor: {
|
|
60
|
-
name: string;
|
|
61
|
-
};
|
|
62
|
-
expires?: Date;
|
|
63
|
-
}): Promise<IExecutableTask<factory.taskName> | null>;
|
|
64
|
-
/**
|
|
65
|
-
* Readyのタスクをname指定でひとつRunningに変更する
|
|
66
|
-
*/
|
|
67
|
-
executeOneIfExists(params: {
|
|
68
|
-
name: {
|
|
69
|
-
$eq: factory.taskName;
|
|
70
|
-
};
|
|
71
|
-
executor: {
|
|
72
|
-
name: string;
|
|
73
|
-
};
|
|
74
|
-
runsAt: {
|
|
75
|
-
$lt: Date;
|
|
76
|
-
};
|
|
77
|
-
sort: {
|
|
78
|
-
numberOfTried?: factory.sortType;
|
|
79
|
-
runsAt?: factory.sortType;
|
|
80
|
-
};
|
|
81
|
-
}): Promise<IExecutableTask<factory.taskName> | null>;
|
|
82
|
-
/**
|
|
83
|
-
* add(2025-03-16~)
|
|
84
|
-
*/
|
|
85
|
-
countPotentiallyRunning(params: {
|
|
86
|
-
name?: {
|
|
87
|
-
$eq?: factory.taskName;
|
|
88
|
-
$in?: factory.taskName[];
|
|
89
|
-
};
|
|
90
|
-
runsAt: {
|
|
91
|
-
$lt: Date;
|
|
92
|
-
};
|
|
93
|
-
limit?: number;
|
|
94
|
-
}): Promise<{
|
|
95
|
-
count: number;
|
|
96
|
-
}>;
|
|
97
|
-
/**
|
|
98
|
-
* 実行日時を一定期間過ぎたReadyタスクについて、Runningスタータスに変更した上で、Runningイベントを発生させる
|
|
99
|
-
*/
|
|
100
|
-
emitRunningIfExists(params: {
|
|
101
|
-
/**
|
|
102
|
-
* 必ずタスク名指定で実行する
|
|
103
|
-
*/
|
|
104
|
-
name: {
|
|
105
|
-
$eq: factory.taskName;
|
|
106
|
-
$in?: never;
|
|
107
|
-
} | {
|
|
108
|
-
$eq?: never;
|
|
109
|
-
$in: factory.taskName[];
|
|
110
|
-
};
|
|
111
|
-
runsAt: {
|
|
112
|
-
$lt: Date;
|
|
113
|
-
};
|
|
114
|
-
sort: {
|
|
115
|
-
numberOfTried?: factory.sortType;
|
|
116
|
-
runsAt?: factory.sortType;
|
|
117
|
-
};
|
|
118
|
-
executor: {
|
|
119
|
-
name: string;
|
|
120
|
-
};
|
|
121
|
-
nameFilterBeforeRunsAt: boolean;
|
|
122
|
-
}): Promise<Pick<factory.task.ITask<factory.taskName>, 'id' | 'name'> | null>;
|
|
123
|
-
/**
|
|
124
|
-
* Readyのままで期限切れのタスクをExpiredに変更する
|
|
125
|
-
*/
|
|
126
|
-
makeExpiredMany(params: {
|
|
127
|
-
expiresLt: Date;
|
|
128
|
-
}): Promise<UpdateWriteOpResult>;
|
|
129
|
-
/**
|
|
130
|
-
* Runningのまま一定期間超過し、かつ、remainingNumberOfTries>0のタスクをReadyに変更する
|
|
131
|
-
*/
|
|
132
|
-
retryMany(params: {
|
|
133
|
-
intervalInMinutes: number;
|
|
134
|
-
/**
|
|
135
|
-
* リトライ条件に残り試行回数条件を追加する
|
|
136
|
-
* 十分に小さい数値を指定すれば、実質残り試行回数に関係なくRunningがReadyに変更されることになる
|
|
137
|
-
*/
|
|
138
|
-
remainingNumberOfTries: {
|
|
139
|
-
$gte?: number;
|
|
140
|
-
$lte?: number;
|
|
141
|
-
};
|
|
142
|
-
name: {
|
|
143
|
-
$in?: factory.taskName[];
|
|
144
|
-
};
|
|
145
|
-
}): Promise<UpdateWriteOpResult>;
|
|
146
59
|
/**
|
|
147
60
|
* 実行中止済タスクを強制的にリトライ
|
|
148
61
|
* 中止済タスクでなければ何もしない
|
|
@@ -150,66 +63,6 @@ export declare class TaskRepo {
|
|
|
150
63
|
retryForciblyIfAborted(params: {
|
|
151
64
|
id: string;
|
|
152
65
|
remainingNumberOfTries: number;
|
|
153
|
-
}): Promise<UpdateWriteOpResult>;
|
|
154
|
-
abortMany(params: {
|
|
155
|
-
intervalInMinutes: number;
|
|
156
|
-
name: {
|
|
157
|
-
$in?: factory.taskName[];
|
|
158
|
-
};
|
|
159
|
-
}): Promise<UpdateWriteOpResult>;
|
|
160
|
-
/**
|
|
161
|
-
* タスクIDから実行結果とステータスを保管する
|
|
162
|
-
* Abortedの場合、dateAbortedもセットする
|
|
163
|
-
*/
|
|
164
|
-
setExecutionResultAndStatus(params: {
|
|
165
|
-
/**
|
|
166
|
-
* タスクID
|
|
167
|
-
*/
|
|
168
|
-
id: string;
|
|
169
|
-
remainingNumberOfTries: number;
|
|
170
|
-
name: factory.taskName;
|
|
171
|
-
}, update: {
|
|
172
|
-
status: factory.taskStatus.Executed | factory.taskStatus.Running | factory.taskStatus.Aborted;
|
|
173
|
-
executionResult: factory.task.IExecutionResult;
|
|
174
|
-
}, next?: INextFunction): Promise<void>;
|
|
175
|
-
/**
|
|
176
|
-
* タスクの状態を参照する
|
|
177
|
-
* 非同期アクション移行が完了したら廃止する(2026-07-29~)
|
|
178
|
-
*/
|
|
179
|
-
findTaskById(params: {
|
|
180
|
-
id: {
|
|
181
|
-
$eq: string;
|
|
182
|
-
};
|
|
183
|
-
project: {
|
|
184
|
-
id: {
|
|
185
|
-
$eq: string;
|
|
186
|
-
};
|
|
187
|
-
};
|
|
188
|
-
name: factory.taskName;
|
|
189
|
-
}, inclusion: IKeyOfProjection[]): Promise<(IDocType & {
|
|
190
|
-
id: string;
|
|
191
|
-
} | undefined)>;
|
|
192
|
-
deleteByProject(params: {
|
|
193
|
-
project: {
|
|
194
|
-
id: string;
|
|
195
|
-
};
|
|
196
|
-
}): Promise<void>;
|
|
197
|
-
/**
|
|
198
|
-
* 不要なタスクを削除する
|
|
199
|
-
*/
|
|
200
|
-
deleteRunsAtPassedCertainPeriod(params: {
|
|
201
|
-
runsAt: {
|
|
202
|
-
$lt: Date;
|
|
203
|
-
};
|
|
204
|
-
}): Promise<import("mongodb").DeleteResult>;
|
|
205
|
-
countDelayedTasks(params: {
|
|
206
|
-
delayInSeconds: number;
|
|
207
|
-
name: {
|
|
208
|
-
$nin?: factory.taskName[];
|
|
209
|
-
};
|
|
210
|
-
limit?: number;
|
|
211
|
-
}): Promise<{
|
|
212
|
-
count: number;
|
|
213
|
-
}>;
|
|
66
|
+
}): Promise<import("mongoose").UpdateWriteOpResult>;
|
|
214
67
|
}
|
|
215
68
|
export {};
|