@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.
Files changed (87) hide show
  1. package/lib/chevre/eventEmitter/task.d.ts +8 -23
  2. package/lib/chevre/eventEmitter/task.js +2 -2
  3. package/lib/chevre/repo/adminAsyncAction.d.ts +2 -2
  4. package/lib/chevre/repo/adminScheduledTask.d.ts +1 -1
  5. package/lib/chevre/repo/adminTask.d.ts +31 -8
  6. package/lib/chevre/repo/adminTask.js +41 -26
  7. package/lib/chevre/repo/aggregateScheduledTask.d.ts +32 -0
  8. package/lib/chevre/repo/aggregateScheduledTask.js +136 -0
  9. package/lib/chevre/repo/asyncAction.d.ts +2 -2
  10. package/lib/chevre/repo/mongoose/schemas/setting.d.ts +1 -0
  11. package/lib/chevre/repo/mongoose/schemas/task.d.ts +2 -5
  12. package/lib/chevre/repo/mongoose/schemas/task.js +87 -96
  13. package/lib/chevre/repo/orderInTransaction.d.ts +0 -3
  14. package/lib/chevre/repo/orderInTransaction.js +30 -22
  15. package/lib/chevre/repo/scheduledTask.d.ts +5 -2
  16. package/lib/chevre/repo/scheduledTask.js +3 -25
  17. package/lib/chevre/repo/task.d.ts +25 -172
  18. package/lib/chevre/repo/task.js +19 -475
  19. package/lib/chevre/repo/taskDelayed.d.ts +74 -0
  20. package/lib/chevre/repo/taskDelayed.js +195 -0
  21. package/lib/chevre/repo/taskRunning.d.ts +35 -0
  22. package/lib/chevre/repo/taskRunning.js +89 -0
  23. package/lib/chevre/repository.d.ts +10 -0
  24. package/lib/chevre/repository.js +24 -2
  25. package/lib/chevre/service/aggregation/system.d.ts +10 -2
  26. package/lib/chevre/service/aggregation/system.js +42 -0
  27. package/lib/chevre/service/assetTransaction/reserve/start/factory/createStartParams.js +5 -25
  28. package/lib/chevre/service/asyncAction.d.ts +2 -2
  29. package/lib/chevre/service/asyncAction.js +1 -4
  30. package/lib/chevre/service/asyncActionHandler/onOperationFailed.d.ts +2 -2
  31. package/lib/chevre/service/asyncActionHandler/onOperationFailed.js +0 -2
  32. package/lib/chevre/service/asyncActionHandler.d.ts +4 -4
  33. package/lib/chevre/service/asyncActionHandler.js +11 -13
  34. package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.js +1 -1
  35. package/lib/chevre/service/offer/eventServiceByCOA/findAcceptAction.d.ts +0 -4
  36. package/lib/chevre/service/offer/eventServiceByCOA/findAcceptAction.js +19 -19
  37. package/lib/chevre/service/order/confirmPayTransaction.js +4 -1
  38. package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +4 -4
  39. package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.js +2 -2
  40. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/createSendEmailMessageTaskIfNotExist.js +2 -2
  41. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.d.ts +2 -2
  42. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.js +1 -1
  43. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/processOrder.js +2 -2
  44. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.js +1 -1
  45. package/lib/chevre/service/payment/any/findAcceptAction.d.ts +0 -4
  46. package/lib/chevre/service/payment/any/findAcceptAction.js +19 -19
  47. package/lib/chevre/service/payment/any/findAuthorizeAction.d.ts +0 -4
  48. package/lib/chevre/service/payment/any/findAuthorizeAction.js +19 -19
  49. package/lib/chevre/service/payment/any/findCheckAction.d.ts +0 -4
  50. package/lib/chevre/service/payment/any/findCheckAction.js +19 -19
  51. package/lib/chevre/service/payment/any/publishPaymentUrl.d.ts +0 -2
  52. package/lib/chevre/service/payment/any/publishPaymentUrl.js +2 -2
  53. package/lib/chevre/service/project.d.ts +0 -3
  54. package/lib/chevre/service/project.js +0 -1
  55. package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +2 -2
  56. package/lib/chevre/service/scheduledTask.d.ts +1 -4
  57. package/lib/chevre/service/scheduledTask.js +3 -10
  58. package/lib/chevre/service/scheduledTaskHandler/onOperationFailed.js +1 -2
  59. package/lib/chevre/service/scheduledTaskHandler.js +0 -13
  60. package/lib/chevre/service/task/acceptCOAOffer.js +1 -14
  61. package/lib/chevre/service/task/authorizePayment.js +1 -7
  62. package/lib/chevre/service/task/checkMovieTicket.js +1 -7
  63. package/lib/chevre/service/task/confirmReserveTransaction.js +3 -1
  64. package/lib/chevre/service/task/importEventCapacitiesFromCOA.js +4 -1
  65. package/lib/chevre/service/task/importEventsFromCOA.js +4 -1
  66. package/lib/chevre/service/task/importOffersFromCOA.js +5 -5
  67. package/lib/chevre/service/task/publishPaymentUrl.js +2 -13
  68. package/lib/chevre/service/task/syncResourcesFromCOA.js +1 -5
  69. package/lib/chevre/service/task/voidReserveTransaction.js +5 -8
  70. package/lib/chevre/service/task.d.ts +3 -22
  71. package/lib/chevre/service/task.js +8 -40
  72. package/lib/chevre/service/taskHandler/onOperationFailed.d.ts +3 -2
  73. package/lib/chevre/service/taskHandler/onOperationFailed.js +5 -16
  74. package/lib/chevre/service/taskHandler.d.ts +1 -2
  75. package/lib/chevre/service/taskHandler.js +7 -53
  76. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.d.ts +8 -4
  77. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +55 -103
  78. package/lib/chevre/service/transaction/placeOrder/exportTasksById.d.ts +2 -0
  79. package/lib/chevre/service/transaction/placeOrder/exportTasksById.js +14 -10
  80. package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.d.ts +13 -3
  81. package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +48 -51
  82. package/lib/chevre/service/transaction/returnOrder.d.ts +2 -0
  83. package/lib/chevre/service/transaction/returnOrder.js +15 -13
  84. package/lib/chevre/service/transaction.d.ts +2 -0
  85. package/lib/chevre/service/transaction.js +0 -2
  86. package/lib/chevre/taskSettings.d.ts +4 -4
  87. 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
- expires: Date // add(2024-04-23~)
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
- // identifier追加(2023-09-01~)
70
- { identifier: 1, runsAt: -1 },
71
- {
72
- name: 'searchByIdentifier',
73
- partialFilterExpression: {
74
- identifier: { $exists: true }
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
- const transaction_1 = require("./mongoose/schemas/transaction");
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(transaction_1.modelName, (0, transaction_1.createSchema)());
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, options) {
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
- if (savePaymentMethodIdInTransaction) {
294
- await this.transactionModel.findOneAndUpdate({
295
- _id: { $eq: params.id },
296
- status: { $eq: factory_1.factory.transactionStatusType.InProgress }
297
- }, {
298
- $set: { 'object.paymentMethods': { paymentMethodId } }
299
- }, {
300
- projection: { _id: 1 }
301
- })
302
- .lean()
303
- .exec()
304
- .then((doc) => {
305
- if (doc === null) {
306
- throw new factory_1.factory.errors.NotFound(factory_1.factory.transactionType.PlaceOrder);
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, UpdateWriteOpResult } from 'mongoose';
2
- import { INextFunction } from '../eventEmitter/task';
1
+ import type { Connection } from 'mongoose';
3
2
  import { factory } from '../factory';
4
- import { IModel, IDocType } from './mongoose/schemas/task';
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?: Date;
8
+ expires?: never;
12
9
  };
13
10
  /**
14
11
  * タスクリポジトリ
15
12
  */
16
13
  export declare class TaskRepo {
17
- readonly taskModel: IModel;
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
- createIfNotExistByAlternateName(params: ICreatingTask & {
47
- alternateName: string;
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 {};