@chevre/domain 26.0.0-alpha.3 → 26.0.0-alpha.30

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 (189) 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/acceptedOffer.d.ts +0 -7
  4. package/lib/chevre/repo/acceptedOffer.js +27 -27
  5. package/lib/chevre/repo/action/actionProcess.d.ts +1 -1
  6. package/lib/chevre/repo/action/inform.d.ts +45 -0
  7. package/lib/chevre/repo/action/inform.js +159 -0
  8. package/lib/chevre/repo/action/update.d.ts +56 -0
  9. package/lib/chevre/repo/action/update.js +173 -0
  10. package/lib/chevre/repo/action.d.ts +3 -19
  11. package/lib/chevre/repo/action.js +0 -298
  12. package/lib/chevre/repo/adminAssetTransaction.d.ts +126 -0
  13. package/lib/chevre/repo/adminAssetTransaction.js +491 -0
  14. package/lib/chevre/repo/adminAsyncAction.d.ts +2 -2
  15. package/lib/chevre/repo/adminScheduledTask.d.ts +1 -1
  16. package/lib/chevre/repo/adminTask.d.ts +25 -8
  17. package/lib/chevre/repo/adminTask.js +31 -32
  18. package/lib/chevre/repo/adminTransaction.d.ts +131 -0
  19. package/lib/chevre/repo/adminTransaction.js +237 -0
  20. package/lib/chevre/repo/aggregateAssetTransaction.d.ts +43 -0
  21. package/lib/chevre/repo/aggregateAssetTransaction.js +166 -0
  22. package/lib/chevre/repo/aggregateScheduledTask.d.ts +32 -0
  23. package/lib/chevre/repo/aggregateScheduledTask.js +136 -0
  24. package/lib/chevre/repo/aggregateTransaction.d.ts +39 -0
  25. package/lib/chevre/repo/aggregateTransaction.js +166 -0
  26. package/lib/chevre/repo/aggregation.d.ts +0 -8
  27. package/lib/chevre/repo/aggregation.js +0 -10
  28. package/lib/chevre/repo/assetTransaction.d.ts +10 -235
  29. package/lib/chevre/repo/assetTransaction.js +48 -636
  30. package/lib/chevre/repo/asyncAction.d.ts +2 -2
  31. package/lib/chevre/repo/authorization.d.ts +0 -6
  32. package/lib/chevre/repo/authorization.js +15 -27
  33. package/lib/chevre/repo/message.d.ts +0 -7
  34. package/lib/chevre/repo/message.js +0 -38
  35. package/lib/chevre/repo/mongoose/schemas/{ownershipInfo.d.ts → action/inform.d.ts} +5 -5
  36. package/lib/chevre/repo/mongoose/schemas/action/inform.js +81 -0
  37. package/lib/chevre/repo/mongoose/schemas/action/update.d.ts +12 -0
  38. package/lib/chevre/repo/mongoose/schemas/action/update.js +107 -0
  39. package/lib/chevre/repo/mongoose/schemas/action.d.ts +1 -1
  40. package/lib/chevre/repo/mongoose/schemas/action.js +8 -1
  41. package/lib/chevre/repo/mongoose/schemas/actionRecipe.js +7 -0
  42. package/lib/chevre/repo/mongoose/schemas/aggregateReservation.js +8 -9
  43. package/lib/chevre/repo/mongoose/schemas/aggregation.js +8 -1
  44. package/lib/chevre/repo/mongoose/schemas/assetTransaction.js +95 -76
  45. package/lib/chevre/repo/mongoose/schemas/authorization.js +25 -18
  46. package/lib/chevre/repo/mongoose/schemas/event.js +7 -0
  47. package/lib/chevre/repo/mongoose/schemas/eventOffer.js +7 -0
  48. package/lib/chevre/repo/mongoose/schemas/message.js +8 -1
  49. package/lib/chevre/repo/mongoose/schemas/pendingReservation.js +11 -4
  50. package/lib/chevre/repo/mongoose/schemas/setting.d.ts +1 -0
  51. package/lib/chevre/repo/mongoose/schemas/task.d.ts +2 -5
  52. package/lib/chevre/repo/mongoose/schemas/task.js +134 -118
  53. package/lib/chevre/repo/mongoose/schemas/ticket.js +8 -1
  54. package/lib/chevre/repo/orderInTransaction.d.ts +0 -3
  55. package/lib/chevre/repo/orderInTransaction.js +30 -22
  56. package/lib/chevre/repo/scheduledTask.d.ts +5 -2
  57. package/lib/chevre/repo/scheduledTask.js +3 -25
  58. package/lib/chevre/repo/task.d.ts +45 -171
  59. package/lib/chevre/repo/task.js +20 -475
  60. package/lib/chevre/repo/taskDelayed.d.ts +74 -0
  61. package/lib/chevre/repo/taskDelayed.js +195 -0
  62. package/lib/chevre/repo/taskRunning.d.ts +35 -0
  63. package/lib/chevre/repo/taskRunning.js +89 -0
  64. package/lib/chevre/repo/ticket.d.ts +0 -6
  65. package/lib/chevre/repo/ticket.js +0 -11
  66. package/lib/chevre/repo/transaction.d.ts +1 -187
  67. package/lib/chevre/repo/transaction.js +2 -383
  68. package/lib/chevre/repository.d.ts +35 -5
  69. package/lib/chevre/repository.js +79 -13
  70. package/lib/chevre/service/aggregation/system.d.ts +17 -9
  71. package/lib/chevre/service/aggregation/system.js +46 -4
  72. package/lib/chevre/service/assetTransaction/cancelReservation/start.js +10 -17
  73. package/lib/chevre/service/assetTransaction/refund.js +2 -2
  74. package/lib/chevre/service/asyncAction.d.ts +2 -2
  75. package/lib/chevre/service/asyncAction.js +1 -4
  76. package/lib/chevre/service/asyncActionHandler/onOperationFailed.d.ts +2 -2
  77. package/lib/chevre/service/asyncActionHandler/onOperationFailed.js +0 -2
  78. package/lib/chevre/service/asyncActionHandler.d.ts +4 -4
  79. package/lib/chevre/service/asyncActionHandler.js +11 -13
  80. package/lib/chevre/service/event/processUpdateMovieTheater.d.ts +4 -2
  81. package/lib/chevre/service/event/processUpdateMovieTheater.js +3 -3
  82. package/lib/chevre/service/event.d.ts +4 -2
  83. package/lib/chevre/service/event.js +3 -3
  84. package/lib/chevre/service/notification/triggerWebhook.d.ts +4 -2
  85. package/lib/chevre/service/notification/triggerWebhook.js +5 -16
  86. package/lib/chevre/service/offer/event/voidTransaction/processVoidTransaction4chevre.js +1 -3
  87. package/lib/chevre/service/offer/eventServiceByCOA/findAcceptAction.d.ts +0 -4
  88. package/lib/chevre/service/offer/eventServiceByCOA/findAcceptAction.js +19 -19
  89. package/lib/chevre/service/offer/onEventChanged.js +0 -2
  90. package/lib/chevre/service/order/confirmPayTransaction.js +4 -1
  91. package/lib/chevre/service/order/deleteOrder.js +0 -1
  92. package/lib/chevre/service/order/onAssetTransactionStatusChanged/isDeliverable.js +1 -49
  93. package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionConfirmed.js +2 -2
  94. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered/factory.js +2 -4
  95. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.js +2 -4
  96. package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +4 -4
  97. package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.js +2 -2
  98. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/createSendEmailMessageTaskIfNotExist.js +2 -2
  99. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.d.ts +2 -2
  100. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.js +3 -5
  101. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/processOrder.js +2 -2
  102. package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.js +1 -1
  103. package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned/factory.js +5 -7
  104. package/lib/chevre/service/order/onOrderUpdated/factory.js +0 -3
  105. package/lib/chevre/service/order/returnOrder.d.ts +0 -2
  106. package/lib/chevre/service/order/returnOrder.js +8 -40
  107. package/lib/chevre/service/order/sendOrder.d.ts +0 -2
  108. package/lib/chevre/service/order/sendOrder.js +41 -55
  109. package/lib/chevre/service/payment/any/findAcceptAction.d.ts +0 -4
  110. package/lib/chevre/service/payment/any/findAcceptAction.js +19 -19
  111. package/lib/chevre/service/payment/any/findAuthorizeAction.d.ts +0 -4
  112. package/lib/chevre/service/payment/any/findAuthorizeAction.js +19 -19
  113. package/lib/chevre/service/payment/any/findCheckAction.d.ts +0 -4
  114. package/lib/chevre/service/payment/any/findCheckAction.js +19 -19
  115. package/lib/chevre/service/payment/any/processVoidPayTransaction.js +1 -1
  116. package/lib/chevre/service/payment/any/publishPaymentUrl.d.ts +0 -2
  117. package/lib/chevre/service/payment/any/publishPaymentUrl.js +2 -2
  118. package/lib/chevre/service/project.d.ts +0 -3
  119. package/lib/chevre/service/project.js +0 -1
  120. package/lib/chevre/service/reserve/cancelReservation.js +3 -3
  121. package/lib/chevre/service/reserve/checkInReservation.js +2 -2
  122. package/lib/chevre/service/reserve/confirmReservation.js +1 -1
  123. package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +2 -2
  124. package/lib/chevre/service/reserve/useReservation.js +1 -1
  125. package/lib/chevre/service/scheduledTask.d.ts +1 -4
  126. package/lib/chevre/service/scheduledTask.js +3 -10
  127. package/lib/chevre/service/scheduledTaskHandler/onOperationFailed.js +1 -2
  128. package/lib/chevre/service/scheduledTaskHandler.js +0 -13
  129. package/lib/chevre/service/task/acceptCOAOffer.js +1 -14
  130. package/lib/chevre/service/task/authorizePayment.js +1 -7
  131. package/lib/chevre/service/task/checkMovieTicket.js +1 -7
  132. package/lib/chevre/service/task/confirmReserveTransaction.js +3 -1
  133. package/lib/chevre/service/task/deleteTransaction.js +8 -39
  134. package/lib/chevre/service/task/importEventsFromCOA.js +4 -2
  135. package/lib/chevre/service/task/onAuthorizationCreated.js +2 -2
  136. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByAggregateOffer.d.ts +4 -2
  137. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByAggregateOffer.js +4 -4
  138. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByEventSeries.d.ts +4 -2
  139. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByEventSeries.js +4 -4
  140. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByMovieTheater.d.ts +4 -2
  141. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByMovieTheater.js +4 -4
  142. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByOfferCatalog.d.ts +4 -2
  143. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByOfferCatalog.js +4 -4
  144. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByProduct.d.ts +4 -2
  145. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByProduct.js +4 -4
  146. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByRoom.d.ts +4 -2
  147. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesByRoom.js +4 -4
  148. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesBySeller.d.ts +4 -2
  149. package/lib/chevre/service/task/onResourceDeleted/deleteResourcesBySeller.js +4 -4
  150. package/lib/chevre/service/task/onResourceDeleted.js +4 -3
  151. package/lib/chevre/service/task/onResourceUpdated/onAggregateOfferUpdated.js +0 -1
  152. package/lib/chevre/service/task/onResourceUpdated/onHasPOSUpdated.js +0 -1
  153. package/lib/chevre/service/task/onResourceUpdated/onOfferCatalogUpdated.js +0 -1
  154. package/lib/chevre/service/task/onResourceUpdated.js +0 -8
  155. package/lib/chevre/service/task/publishPaymentUrl.js +2 -13
  156. package/lib/chevre/service/task/returnOrder.js +2 -5
  157. package/lib/chevre/service/task/returnPayTransaction.js +2 -2
  158. package/lib/chevre/service/task/sendOrder.js +2 -2
  159. package/lib/chevre/service/task/syncResourcesFromCOA.js +31 -23
  160. package/lib/chevre/service/task/triggerWebhook.js +4 -2
  161. package/lib/chevre/service/task/voidReserveTransaction.js +5 -8
  162. package/lib/chevre/service/task.d.ts +3 -22
  163. package/lib/chevre/service/task.js +8 -40
  164. package/lib/chevre/service/taskHandler/onOperationFailed/informTaskIfNeeded.js +0 -1
  165. package/lib/chevre/service/taskHandler/onOperationFailed.d.ts +3 -2
  166. package/lib/chevre/service/taskHandler/onOperationFailed.js +5 -16
  167. package/lib/chevre/service/taskHandler.d.ts +1 -2
  168. package/lib/chevre/service/taskHandler.js +7 -19
  169. package/lib/chevre/service/transaction/deleteTransaction/deletePayTransactionsByPlaceOrder.js +2 -2
  170. package/lib/chevre/service/transaction/deleteTransaction/deleteReservationsByPlaceOrder.js +2 -2
  171. package/lib/chevre/service/transaction/deleteTransaction.d.ts +6 -2
  172. package/lib/chevre/service/transaction/deleteTransaction.js +5 -5
  173. package/lib/chevre/service/transaction/placeOrder/confirm.js +1 -1
  174. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.d.ts +8 -4
  175. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +55 -103
  176. package/lib/chevre/service/transaction/placeOrder/exportTasksById.d.ts +2 -0
  177. package/lib/chevre/service/transaction/placeOrder/exportTasksById.js +14 -10
  178. package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.d.ts +13 -3
  179. package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +48 -51
  180. package/lib/chevre/service/transaction/returnOrder.d.ts +2 -0
  181. package/lib/chevre/service/transaction/returnOrder.js +15 -13
  182. package/lib/chevre/service/transaction.d.ts +2 -0
  183. package/lib/chevre/service/transaction.js +0 -2
  184. package/lib/chevre/service/validation/validateOrder.js +2 -2
  185. package/lib/chevre/taskSettings.d.ts +4 -4
  186. package/package.json +2 -2
  187. package/lib/chevre/repo/mongoose/schemas/ownershipInfo.js +0 -227
  188. package/lib/chevre/repo/ownershipInfo.d.ts +0 -122
  189. package/lib/chevre/repo/ownershipInfo.js +0 -466
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TaskDelayedRepo = void 0;
7
+ const moment_1 = __importDefault(require("moment"));
8
+ const task_1 = require("../eventEmitter/task");
9
+ const factory_1 = require("../factory");
10
+ const settings_1 = require("../settings");
11
+ const task_2 = require("./mongoose/schemas/task");
12
+ /**
13
+ * 遅延タスクリポジトリ
14
+ */
15
+ class TaskDelayedRepo {
16
+ taskModel;
17
+ constructor(connection) {
18
+ this.taskModel = connection.model(task_2.modelName, (0, task_2.createSchema)());
19
+ }
20
+ /**
21
+ * 潜在的に実行されるべきタスクをカウントする
22
+ * add(2025-03-16~)
23
+ */
24
+ async countPotentiallyRunning(params) {
25
+ const { runsAt, limit, name } = params;
26
+ const nameEq = name?.$eq;
27
+ const nameIn = name?.$in;
28
+ if (!(runsAt.$lt instanceof Date)) {
29
+ throw new factory_1.factory.errors.Argument('runsAt.$lt', 'must be Date');
30
+ }
31
+ const query = this.taskModel.countDocuments({
32
+ status: { $eq: factory_1.factory.taskStatus.Ready },
33
+ ...(typeof nameEq === 'string' || Array.isArray(nameIn))
34
+ ? {
35
+ name: {
36
+ ...(typeof nameEq === 'string') ? { $eq: nameEq } : undefined,
37
+ ...(Array.isArray(nameIn)) ? { $in: nameIn } : undefined
38
+ }
39
+ }
40
+ : undefined,
41
+ runsAt: { $lt: params.runsAt.$lt }
42
+ });
43
+ if (typeof limit === 'number' && limit >= 0) {
44
+ query.limit(limit);
45
+ }
46
+ const count = await query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
47
+ .exec();
48
+ return { count };
49
+ }
50
+ /**
51
+ * 実行日時を一定期間過ぎたReadyタスクについて、Runningステータスに変更する
52
+ */
53
+ async runDelayedTask(params) {
54
+ const { filter } = params;
55
+ const projection = {
56
+ _id: 0,
57
+ id: { $toString: '$_id' },
58
+ name: 1
59
+ };
60
+ return this.taskModel.findOneAndUpdate(filter, {
61
+ $set: {
62
+ status: factory_1.factory.taskStatus.Running, // 実行中に変更
63
+ lastTriedAt: new Date(),
64
+ executor: params.executor
65
+ },
66
+ $inc: {
67
+ remainingNumberOfTries: -1, // 残りトライ可能回数減らす
68
+ numberOfTried: 1 // トライ回数増やす
69
+ }
70
+ }, {
71
+ new: true,
72
+ projection,
73
+ sort: {
74
+ runsAt: factory_1.factory.sortType.Ascending // ソートはrunsAtで固定化(2026-08-07~)
75
+ }
76
+ })
77
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
78
+ .lean()
79
+ .exec();
80
+ }
81
+ /**
82
+ * 実行日時を一定期間過ぎたReadyタスクについて、Runningステータスに変更した上で、Runningイベントを発生させる
83
+ */
84
+ async runDelayedTaskIfExistsByName(params) {
85
+ if (!(params.runsAt.$lt instanceof Date)) {
86
+ throw new factory_1.factory.errors.Argument('runsAt.$lt', 'must be Date');
87
+ }
88
+ // インデックスについては、name指定であれば'runDelayedTaskByName'を想定
89
+ const filter = {
90
+ status: { $eq: factory_1.factory.taskStatus.Ready },
91
+ name: params.name,
92
+ runsAt: { $lt: params.runsAt.$lt }
93
+ };
94
+ const doc = await this.runDelayedTask({
95
+ filter,
96
+ executor: params.executor
97
+ });
98
+ if (doc === null) {
99
+ return null;
100
+ }
101
+ const nameEq = params.name?.$eq;
102
+ let changedTask;
103
+ if (typeof nameEq === 'string') {
104
+ changedTask = {
105
+ id: doc.id,
106
+ status: factory_1.factory.taskStatus.Running,
107
+ name: nameEq
108
+ };
109
+ }
110
+ else {
111
+ changedTask = {
112
+ id: doc.id,
113
+ status: factory_1.factory.taskStatus.Running
114
+ };
115
+ }
116
+ task_1.taskEventEmitter.emitTaskStatusChanged(changedTask);
117
+ return doc;
118
+ }
119
+ /**
120
+ * 実行日時を一定期間過ぎたReadyタスクについて、Runningステータスに変更した上で、Runningイベントを発生させる
121
+ * 2026-08-06~
122
+ */
123
+ async runDelayedTaskIfExists(params) {
124
+ if (!(params.runsAt.$lt instanceof Date)) {
125
+ throw new factory_1.factory.errors.Argument('runsAt.$lt', 'must be Date');
126
+ }
127
+ // インデックスについては、name未指定であれば'executeOneByNameIfExists'を想定
128
+ const filter = {
129
+ status: { $eq: factory_1.factory.taskStatus.Ready },
130
+ runsAt: { $lt: params.runsAt.$lt }
131
+ };
132
+ const doc = await this.runDelayedTask({
133
+ filter,
134
+ executor: params.executor
135
+ });
136
+ if (doc === null) {
137
+ return null;
138
+ }
139
+ const changedTask = {
140
+ id: doc.id,
141
+ status: factory_1.factory.taskStatus.Running
142
+ };
143
+ task_1.taskEventEmitter.emitTaskStatusChanged(changedTask);
144
+ return doc;
145
+ }
146
+ /**
147
+ * Runningのまま一定期間超過し、かつ、remainingNumberOfTries>0のタスクをReadyに変更する
148
+ */
149
+ async retryTasks(params) {
150
+ const lastTriedAtShoudBeLessThan = (0, moment_1.default)()
151
+ .add(-params.intervalInMinutes, 'minutes')
152
+ .toDate();
153
+ return this.taskModel.updateMany(
154
+ // name: 'retry'のindexと連動しているので、条件の順序などには注意すること
155
+ // @see schemas/task
156
+ {
157
+ status: { $eq: factory_1.factory.taskStatus.Running },
158
+ remainingNumberOfTries: { $gte: 1 },
159
+ lastTriedAt: {
160
+ $type: 'date',
161
+ $lt: lastTriedAtShoudBeLessThan
162
+ }
163
+ }, {
164
+ $set: {
165
+ status: factory_1.factory.taskStatus.Ready // 実行前に変更
166
+ }
167
+ })
168
+ .exec();
169
+ }
170
+ /**
171
+ * $lte:0をReadyにする -> Readyにすれば自動的にAbortedになる
172
+ */
173
+ async retryAbortingTasks(params) {
174
+ const lastTriedAtShoudBeLessThan = (0, moment_1.default)()
175
+ .add(-params.intervalInMinutes, 'minutes')
176
+ .toDate();
177
+ return this.taskModel.updateMany(
178
+ // name: 'retry'のindexと連動しているので、条件の順序などには注意すること
179
+ // @see schemas/task
180
+ {
181
+ status: { $eq: factory_1.factory.taskStatus.Running },
182
+ remainingNumberOfTries: { $lte: 0 },
183
+ lastTriedAt: {
184
+ $type: 'date',
185
+ $lt: lastTriedAtShoudBeLessThan
186
+ }
187
+ }, {
188
+ $set: {
189
+ status: factory_1.factory.taskStatus.Ready // 実行前に変更
190
+ }
191
+ })
192
+ .exec();
193
+ }
194
+ }
195
+ exports.TaskDelayedRepo = TaskDelayedRepo;
@@ -0,0 +1,35 @@
1
+ import type { Connection } from 'mongoose';
2
+ import { factory } from '../factory';
3
+ import type { IExecutableTask } from '../taskSettings';
4
+ /**
5
+ * 実行中タスクリポジトリ
6
+ */
7
+ export declare class TaskRunningRepo {
8
+ private readonly taskModel;
9
+ constructor(connection: Connection);
10
+ /**
11
+ * Ready -> remainingNumberOfTriesが1減る
12
+ * Running -> findOneするだけ
13
+ */
14
+ executeOneById(params: {
15
+ id: string;
16
+ status: factory.taskStatus.Ready | factory.taskStatus.Running;
17
+ executor: {
18
+ name: string;
19
+ };
20
+ expires?: never;
21
+ }): Promise<IExecutableTask<factory.taskName> | null>;
22
+ /**
23
+ * タスクIDから実行結果とステータスを保管する
24
+ * Abortedの場合、dateAbortedもセットする
25
+ */
26
+ setExecutionResultAndStatus(params: {
27
+ /**
28
+ * タスクID
29
+ */
30
+ id: string;
31
+ }, update: {
32
+ status: factory.taskStatus.Executed | factory.taskStatus.Running | factory.taskStatus.Aborted;
33
+ executionResult: factory.task.IExecutionResult;
34
+ }): Promise<void>;
35
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskRunningRepo = void 0;
4
+ const factory_1 = require("../factory");
5
+ const settings_1 = require("../settings");
6
+ const task_1 = require("./mongoose/schemas/task");
7
+ const executableTaskProjection = {
8
+ _id: 0,
9
+ id: { $toString: '$_id' },
10
+ // 必要最低限にprojection(2024-04-23~)
11
+ data: 1,
12
+ name: 1,
13
+ status: 1,
14
+ numberOfTried: 1,
15
+ project: 1,
16
+ remainingNumberOfTries: 1,
17
+ runsAt: 1,
18
+ // expires: 1 // 非同期アクションは移行につきexpires廃止(2026-08-05~)
19
+ };
20
+ /**
21
+ * 実行中タスクリポジトリ
22
+ */
23
+ class TaskRunningRepo {
24
+ taskModel;
25
+ constructor(connection) {
26
+ this.taskModel = connection.model(task_1.modelName, (0, task_1.createSchema)());
27
+ }
28
+ /**
29
+ * Ready -> remainingNumberOfTriesが1減る
30
+ * Running -> findOneするだけ
31
+ */
32
+ async executeOneById(params) {
33
+ const now = new Date();
34
+ let doc;
35
+ if (params.status === factory_1.factory.taskStatus.Running) {
36
+ doc = await this.taskModel.findOne({
37
+ _id: { $eq: params.id },
38
+ status: { $eq: params.status },
39
+ runsAt: { $lt: now },
40
+ // ...(params.expires instanceof Date) ? { expires: { $gt: now } } : undefined // 非同期アクションは移行につきexpires廃止(2026-08-05~)
41
+ }, executableTaskProjection)
42
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
43
+ .lean()
44
+ .exec();
45
+ }
46
+ else {
47
+ doc = await this.taskModel.findOneAndUpdate({
48
+ _id: { $eq: params.id },
49
+ status: { $eq: params.status },
50
+ runsAt: { $lt: now },
51
+ // ...(params.expires instanceof Date) ? { expires: { $gt: now } } : undefined // 非同期アクションは移行につきexpires廃止(2026-08-05~)
52
+ }, {
53
+ $set: {
54
+ status: factory_1.factory.taskStatus.Running, // 実行中に変更
55
+ lastTriedAt: now,
56
+ executor: params.executor
57
+ },
58
+ $inc: {
59
+ remainingNumberOfTries: -1, // 残りトライ可能回数減らす
60
+ numberOfTried: 1 // トライ回数増やす
61
+ }
62
+ }, { new: true, projection: executableTaskProjection })
63
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
64
+ .lean() // lean(2024-09-26~)
65
+ .exec();
66
+ }
67
+ if (doc === null) {
68
+ return null;
69
+ }
70
+ return doc;
71
+ }
72
+ /**
73
+ * タスクIDから実行結果とステータスを保管する
74
+ * Abortedの場合、dateAbortedもセットする
75
+ */
76
+ async setExecutionResultAndStatus(params, update) {
77
+ const { id } = params;
78
+ const { status, executionResult } = update;
79
+ await this.taskModel.updateOne({ _id: { $eq: id } }, {
80
+ $set: {
81
+ status,
82
+ ...(status === factory_1.factory.taskStatus.Aborted) ? { dateAborted: executionResult.endDate } : undefined // 2025-08-04~
83
+ },
84
+ $push: { executionResults: executionResult }
85
+ })
86
+ .exec();
87
+ }
88
+ }
89
+ exports.TaskRunningRepo = TaskRunningRepo;
@@ -39,10 +39,4 @@ export declare class TicketRepo {
39
39
  */
40
40
  issueByTicketToken(params: IIssueParams): Promise<Pick<ITicket, 'id'>>;
41
41
  findTickets(params: ISearchConditions, inclusion: IKeyOfProjection[]): Promise<ITicket[]>;
42
- /**
43
- * 発行日時を一定期間過ぎたチケットを削除する
44
- */
45
- deleteTicketsByDateIssued(params: {
46
- dateIssuedLt: Date;
47
- }): Promise<void>;
48
42
  }
@@ -81,16 +81,5 @@ class TicketRepo {
81
81
  .lean() // 2024-08-20~
82
82
  .exec();
83
83
  }
84
- /**
85
- * 発行日時を一定期間過ぎたチケットを削除する
86
- */
87
- async deleteTicketsByDateIssued(params) {
88
- await this.ticketModel.deleteMany({
89
- dateIssued: {
90
- $lt: params.dateIssuedLt
91
- }
92
- })
93
- .exec();
94
- }
95
84
  }
96
85
  exports.TicketRepo = TicketRepo;
@@ -1,37 +1,11 @@
1
- import type { Connection, UpdateQuery } from 'mongoose';
1
+ import type { Connection } from 'mongoose';
2
2
  import { factory } from '../factory';
3
- import { IDocType } from './mongoose/schemas/transaction';
4
- interface IAggregationByStatus {
5
- transactionCount: number;
6
- avgDuration: number;
7
- maxDuration: number;
8
- minDuration: number;
9
- percentilesDuration: {
10
- name: string;
11
- value: number;
12
- }[];
13
- }
14
- interface IStatus {
15
- status: factory.transactionStatusType;
16
- aggregation: IAggregationByStatus;
17
- }
18
- export interface IAggregatePlaceOrder {
19
- statuses: IStatus[];
20
- }
21
3
  /**
22
4
  * 取引リポジトリ
23
5
  */
24
6
  export declare class TransactionRepo {
25
7
  private readonly transactionModel;
26
8
  constructor(connection: Connection);
27
- countPotentiallyExportTasks(params: {
28
- endDate: {
29
- $lt: Date;
30
- };
31
- limit?: number;
32
- }): Promise<{
33
- count: number;
34
- }>;
35
9
  /**
36
10
  * タスク未エクスポートの取引をひとつ取得してエクスポートを開始する
37
11
  */
@@ -53,27 +27,6 @@ export declare class TransactionRepo {
53
27
  startDate?: factory.sortType;
54
28
  };
55
29
  }): Promise<Pick<factory.transaction.ITransaction<factory.transactionType>, 'id' | 'typeOf'> | null>;
56
- /**
57
- * tasksExportAction.actionStatusがActiveActionStatusのまま一定時間経過した取引について
58
- * PotentialActionStatusに変更する
59
- * 2025-03-10~
60
- */
61
- reExportAction(params: {
62
- startDate: {
63
- $lt: Date;
64
- };
65
- }): Promise<import("mongoose").UpdateWriteOpResult>;
66
- /**
67
- * タスクエクスポートの遅延している取引について明示的にemitTransactionStatusChangedを実行する
68
- */
69
- exportTasksMany(params: {
70
- now: Date;
71
- delayInSeconds: number;
72
- status: {
73
- $in: factory.transactionStatusType[];
74
- };
75
- limit: number;
76
- }): Promise<Pick<import("@chevre/factory/lib/chevre/transaction/placeOrder").ITransaction | import("@chevre/factory/lib/chevre/transaction/returnOrder").ITransaction, "id" | "typeOf" | "status">[]>;
77
30
  /**
78
31
  * set task status exported by transaction id
79
32
  * IDでタスクをエクスポート済に変更する
@@ -81,143 +34,4 @@ export declare class TransactionRepo {
81
34
  setTasksExportedById(params: {
82
35
  id: string;
83
36
  }): Promise<void>;
84
- /**
85
- * add(2025-03-13~)
86
- */
87
- countPotentiallyExpired(params: {
88
- expires: {
89
- $lt: Date;
90
- };
91
- limit?: number;
92
- }): Promise<{
93
- count: number;
94
- }>;
95
- /**
96
- * add(2025-03-03~)
97
- */
98
- makeOneExpiredIfExists(params: {
99
- expires: {
100
- $lt: Date;
101
- };
102
- }): Promise<Pick<factory.transaction.ITransaction<factory.transactionType>, 'id' | 'typeOf'> | undefined>;
103
- /**
104
- * 取引を期限切れにする
105
- */
106
- makeExpired(params: {
107
- expires: {
108
- $lt: Date;
109
- };
110
- limit: number;
111
- }): Promise<Pick<factory.transaction.ITransaction<factory.transactionType>, 'id' | 'typeOf'>[]>;
112
- findByIdAndDelete(params: {
113
- id: string;
114
- }): Promise<void>;
115
- unsetUnnecessaryFields(params: {
116
- filter: any;
117
- $unset: any;
118
- }): Promise<import("mongoose").UpdateWriteOpResult>;
119
- updateById4migration(params: {
120
- id: string;
121
- update: UpdateQuery<IDocType>;
122
- }): Promise<import("mongoose").UpdateWriteOpResult>;
123
- /**
124
- * 終了日時を一定期間過ぎたアクションを削除する
125
- */
126
- deleteEndDatePassedCertainPeriod(params: {
127
- typeOf: factory.transactionType;
128
- endDate: {
129
- $gte: Date;
130
- $lt: Date;
131
- };
132
- }): Promise<import("mongodb").DeleteResult>;
133
- getCursor(conditions: any, projection: any, sort?: factory.sortType): import("mongoose").Cursor<import("mongoose").Document<unknown, Record<string, never>, IDocType, import("./mongoose/virtuals").IVirtuals, {}> & (({
134
- object: import("@chevre/factory/lib/chevre/transaction/placeOrder").IObject;
135
- error?: any;
136
- project: import("@chevre/factory/lib/chevre/transaction").IProject;
137
- seller: import("@chevre/factory/lib/chevre/transaction/placeOrder").ISeller;
138
- typeOf: factory.transactionType.PlaceOrder;
139
- expires: Date;
140
- result?: import("@chevre/factory/lib/chevre/transaction/placeOrder").IResult | undefined;
141
- startDate: Date;
142
- endDate?: Date | undefined;
143
- instrument?: import("@chevre/factory/lib/chevre/transaction/placeOrder").IInstrument | undefined;
144
- agent: import("@chevre/factory/lib/chevre/transaction/placeOrder").IAgent;
145
- status: factory.transactionStatusType;
146
- tasksExportAction?: import("@chevre/factory/lib/chevre/transaction").ITasksExportAction | undefined;
147
- potentialActions?: undefined;
148
- } & {
149
- _id: import("mongoose").Types.ObjectId;
150
- } & {
151
- __v: number;
152
- }) | ({
153
- object: import("@chevre/factory/lib/chevre/transaction/returnOrder").IObject;
154
- error?: any;
155
- project: import("@chevre/factory/lib/chevre/transaction").IProject;
156
- seller: import("@chevre/factory/lib/chevre/transaction").ISeller;
157
- typeOf: factory.transactionType.ReturnOrder;
158
- expires: Date;
159
- result?: import("@chevre/factory/lib/chevre/transaction/returnOrder").IResult | undefined;
160
- startDate: Date;
161
- endDate?: Date | undefined;
162
- agent: import("@chevre/factory/lib/chevre/transaction").IAgent;
163
- recipient?: undefined;
164
- status: factory.transactionStatusType;
165
- tasksExportAction?: import("@chevre/factory/lib/chevre/transaction").ITasksExportAction | undefined;
166
- potentialActions?: import("@chevre/factory/lib/chevre/transaction/returnOrder").IPotentialActions | undefined;
167
- } & {
168
- _id: import("mongoose").Types.ObjectId;
169
- } & {
170
- __v: number;
171
- })), import("mongoose").QueryOptions<IDocType>, (import("mongoose").Document<unknown, Record<string, never>, IDocType, import("./mongoose/virtuals").IVirtuals, {}> & (({
172
- object: import("@chevre/factory/lib/chevre/transaction/placeOrder").IObject;
173
- error?: any;
174
- project: import("@chevre/factory/lib/chevre/transaction").IProject;
175
- seller: import("@chevre/factory/lib/chevre/transaction/placeOrder").ISeller;
176
- typeOf: factory.transactionType.PlaceOrder;
177
- expires: Date;
178
- result?: import("@chevre/factory/lib/chevre/transaction/placeOrder").IResult | undefined;
179
- startDate: Date;
180
- endDate?: Date | undefined;
181
- instrument?: import("@chevre/factory/lib/chevre/transaction/placeOrder").IInstrument | undefined;
182
- agent: import("@chevre/factory/lib/chevre/transaction/placeOrder").IAgent;
183
- status: factory.transactionStatusType;
184
- tasksExportAction?: import("@chevre/factory/lib/chevre/transaction").ITasksExportAction | undefined;
185
- potentialActions?: undefined;
186
- } & {
187
- _id: import("mongoose").Types.ObjectId;
188
- } & {
189
- __v: number;
190
- }) | ({
191
- object: import("@chevre/factory/lib/chevre/transaction/returnOrder").IObject;
192
- error?: any;
193
- project: import("@chevre/factory/lib/chevre/transaction").IProject;
194
- seller: import("@chevre/factory/lib/chevre/transaction").ISeller;
195
- typeOf: factory.transactionType.ReturnOrder;
196
- expires: Date;
197
- result?: import("@chevre/factory/lib/chevre/transaction/returnOrder").IResult | undefined;
198
- startDate: Date;
199
- endDate?: Date | undefined;
200
- agent: import("@chevre/factory/lib/chevre/transaction").IAgent;
201
- recipient?: undefined;
202
- status: factory.transactionStatusType;
203
- tasksExportAction?: import("@chevre/factory/lib/chevre/transaction").ITasksExportAction | undefined;
204
- potentialActions?: import("@chevre/factory/lib/chevre/transaction/returnOrder").IPotentialActions | undefined;
205
- } & {
206
- _id: import("mongoose").Types.ObjectId;
207
- } & {
208
- __v: number;
209
- }))) | null>;
210
- aggregatePlaceOrder(params: {
211
- project?: {
212
- id?: {
213
- $ne?: string;
214
- };
215
- };
216
- startFrom: Date;
217
- startThrough: Date;
218
- typeOf: factory.transactionType;
219
- clientId?: string;
220
- }): Promise<IAggregatePlaceOrder>;
221
- private agggregateByStatus;
222
37
  }
223
- export {};