@chevre/domain 21.2.0-alpha.11 → 21.2.0-alpha.111

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 (277) hide show
  1. package/example/src/chevre/aggregation/aggregateSystem.ts +85 -27
  2. package/example/src/chevre/deleteTasksByName.ts +10 -2
  3. package/example/src/chevre/importEventsFromCOA.ts +3 -4
  4. package/example/src/chevre/migrateOrderAdditionalProperties.ts +85 -0
  5. package/example/src/chevre/processPay.ts +5 -1
  6. package/example/src/chevre/processRegisterMembership.ts +8 -4
  7. package/example/src/chevre/processRegisterPaymentCard.ts +8 -4
  8. package/example/src/chevre/processReserve.ts +4 -1
  9. package/example/src/chevre/saveTasks.ts +13 -10
  10. package/example/src/chevre/searchAbortedTasks.ts +36 -0
  11. package/example/src/chevre/searchActions.ts +33 -0
  12. package/example/src/chevre/searchReservationNumbersByOrderNumbers.ts +37 -1
  13. package/example/src/chevre/searchSendEmailActions.ts +44 -0
  14. package/example/src/chevre/task/executeTasks.ts +26 -0
  15. package/example/src/chevre/transaction/findCreditCard.ts +1 -1
  16. package/example/src/chevre/transaction/orderMembershipService.ts +1 -1
  17. package/example/src/chevre/transaction/processReturnOrder.ts +40 -0
  18. package/example/src/chevre/transaction/startExportTasks.ts +20 -0
  19. package/example/src/chevre/updateTransaction.ts +1 -1
  20. package/example/src/playOnMoment.ts +24 -0
  21. package/lib/chevre/credentials.d.ts +1 -0
  22. package/lib/chevre/credentials.js +2 -1
  23. package/lib/chevre/eventEmitter/assetTransaction.d.ts +21 -0
  24. package/lib/chevre/eventEmitter/assetTransaction.js +25 -0
  25. package/lib/chevre/eventEmitter/task.d.ts +18 -0
  26. package/lib/chevre/eventEmitter/task.js +25 -0
  27. package/lib/chevre/eventEmitter/transaction.d.ts +21 -0
  28. package/lib/chevre/eventEmitter/transaction.js +25 -0
  29. package/lib/chevre/eventEmitter.d.ts +4 -0
  30. package/lib/chevre/eventEmitter.js +9 -0
  31. package/lib/chevre/index.d.ts +3 -2
  32. package/lib/chevre/index.js +5 -3
  33. package/lib/chevre/repo/account.js +3 -2
  34. package/lib/chevre/repo/accountTransaction.d.ts +3 -11
  35. package/lib/chevre/repo/accountTransaction.js +3 -55
  36. package/lib/chevre/repo/action.d.ts +42 -2
  37. package/lib/chevre/repo/action.js +130 -57
  38. package/lib/chevre/repo/additionalProperty.js +2 -1
  39. package/lib/chevre/repo/aggregation.d.ts +3 -0
  40. package/lib/chevre/repo/aggregation.js +3 -0
  41. package/lib/chevre/repo/assetTransaction.d.ts +25 -9
  42. package/lib/chevre/repo/assetTransaction.js +259 -87
  43. package/lib/chevre/repo/categoryCode.d.ts +1 -1
  44. package/lib/chevre/repo/categoryCode.js +37 -25
  45. package/lib/chevre/repo/code.js +3 -2
  46. package/lib/chevre/repo/comment.d.ts +4 -1
  47. package/lib/chevre/repo/comment.js +22 -6
  48. package/lib/chevre/repo/confirmationNumber.d.ts +0 -1
  49. package/lib/chevre/repo/confirmationNumber.js +3 -15
  50. package/lib/chevre/repo/creativeWork.d.ts +2 -4
  51. package/lib/chevre/repo/creativeWork.js +35 -12
  52. package/lib/chevre/repo/customer.js +2 -1
  53. package/lib/chevre/repo/emailMessage.d.ts +1 -27
  54. package/lib/chevre/repo/emailMessage.js +2 -1
  55. package/lib/chevre/repo/event.d.ts +5 -1
  56. package/lib/chevre/repo/event.js +4 -3
  57. package/lib/chevre/repo/member.js +4 -3
  58. package/lib/chevre/repo/merchantReturnPolicy.d.ts +1 -3
  59. package/lib/chevre/repo/merchantReturnPolicy.js +2 -1
  60. package/lib/chevre/repo/mongoose/schemas/account.d.ts +4 -2
  61. package/lib/chevre/repo/mongoose/schemas/accountTitle.d.ts +29 -3
  62. package/lib/chevre/repo/mongoose/schemas/accountTransaction.d.ts +31 -3
  63. package/lib/chevre/repo/mongoose/schemas/accountTransaction.js +1 -1
  64. package/lib/chevre/repo/mongoose/schemas/accountingReport.d.ts +13 -3
  65. package/lib/chevre/repo/mongoose/schemas/action.d.ts +43 -3
  66. package/lib/chevre/repo/mongoose/schemas/action.js +19 -1
  67. package/lib/chevre/repo/mongoose/schemas/additionalProperty.d.ts +17 -3
  68. package/lib/chevre/repo/mongoose/schemas/aggregation.d.ts +4 -2
  69. package/lib/chevre/repo/mongoose/schemas/assetTransaction.d.ts +44 -3
  70. package/lib/chevre/repo/mongoose/schemas/assetTransaction.js +32 -19
  71. package/lib/chevre/repo/mongoose/schemas/authorization.d.ts +19 -3
  72. package/lib/chevre/repo/mongoose/schemas/authorization.js +1 -1
  73. package/lib/chevre/repo/mongoose/schemas/categoryCode.d.ts +25 -3
  74. package/lib/chevre/repo/mongoose/schemas/comments.d.ts +27 -3
  75. package/lib/chevre/repo/mongoose/schemas/comments.js +1 -1
  76. package/lib/chevre/repo/mongoose/schemas/creativeWork.d.ts +43 -3
  77. package/lib/chevre/repo/mongoose/schemas/customer.d.ts +25 -3
  78. package/lib/chevre/repo/mongoose/schemas/emailMessages.d.ts +21 -3
  79. package/lib/chevre/repo/mongoose/schemas/event.d.ts +71 -3
  80. package/lib/chevre/repo/mongoose/schemas/member.d.ts +13 -3
  81. package/lib/chevre/repo/mongoose/schemas/merchantReturnPolicy.d.ts +21 -3
  82. package/lib/chevre/repo/mongoose/schemas/offer.d.ts +65 -3
  83. package/lib/chevre/repo/mongoose/schemas/offerCatalog.d.ts +27 -3
  84. package/lib/chevre/repo/mongoose/schemas/offerItemCondition.d.ts +74 -0
  85. package/lib/chevre/repo/mongoose/schemas/offerItemCondition.js +45 -0
  86. package/lib/chevre/repo/mongoose/schemas/order.d.ts +51 -3
  87. package/lib/chevre/repo/mongoose/schemas/order.js +1 -1
  88. package/lib/chevre/repo/mongoose/schemas/ownershipInfo.d.ts +25 -3
  89. package/lib/chevre/repo/mongoose/schemas/ownershipInfo.js +1 -1
  90. package/lib/chevre/repo/mongoose/schemas/place.d.ts +49 -3
  91. package/lib/chevre/repo/mongoose/schemas/priceSpecification.d.ts +29 -3
  92. package/lib/chevre/repo/mongoose/schemas/product.d.ts +31 -3
  93. package/lib/chevre/repo/mongoose/schemas/project.d.ts +23 -3
  94. package/lib/chevre/repo/mongoose/schemas/reservation.d.ts +63 -5
  95. package/lib/chevre/repo/mongoose/schemas/reservation.js +1 -1
  96. package/lib/chevre/repo/mongoose/schemas/role.d.ts +11 -3
  97. package/lib/chevre/repo/mongoose/schemas/seller.d.ts +31 -3
  98. package/lib/chevre/repo/mongoose/schemas/seller.js +6 -0
  99. package/lib/chevre/repo/mongoose/schemas/serviceOutput.d.ts +11 -3
  100. package/lib/chevre/repo/mongoose/schemas/serviceOutput.js +1 -1
  101. package/lib/chevre/repo/mongoose/schemas/task.d.ts +30 -3
  102. package/lib/chevre/repo/mongoose/schemas/task.js +2 -1
  103. package/lib/chevre/repo/mongoose/schemas/telemetry.d.ts +21 -3
  104. package/lib/chevre/repo/mongoose/schemas/transaction.d.ts +40 -3
  105. package/lib/chevre/repo/mongoose/schemas/transaction.js +2 -1
  106. package/lib/chevre/repo/mongoose/schemas/trip.d.ts +11 -3
  107. package/lib/chevre/repo/offer.js +3 -2
  108. package/lib/chevre/repo/offerCatalog.js +0 -27
  109. package/lib/chevre/repo/offerItemCondition.d.ts +22 -0
  110. package/lib/chevre/repo/offerItemCondition.js +121 -0
  111. package/lib/chevre/repo/order.d.ts +55 -3
  112. package/lib/chevre/repo/order.js +62 -10
  113. package/lib/chevre/repo/ownershipInfo.js +2 -7
  114. package/lib/chevre/repo/place.js +3 -2
  115. package/lib/chevre/repo/priceSpecification.js +3 -2
  116. package/lib/chevre/repo/product.d.ts +1 -3
  117. package/lib/chevre/repo/product.js +25 -4
  118. package/lib/chevre/repo/project.js +2 -1
  119. package/lib/chevre/repo/reservation.d.ts +20 -4
  120. package/lib/chevre/repo/reservation.js +40 -59
  121. package/lib/chevre/repo/role.js +3 -2
  122. package/lib/chevre/repo/seller.d.ts +1 -1
  123. package/lib/chevre/repo/seller.js +44 -23
  124. package/lib/chevre/repo/serviceOutput.js +2 -1
  125. package/lib/chevre/repo/task.d.ts +42 -2
  126. package/lib/chevre/repo/task.js +93 -11
  127. package/lib/chevre/repo/transaction.d.ts +23 -4
  128. package/lib/chevre/repo/transaction.js +179 -60
  129. package/lib/chevre/repo/trip.js +2 -1
  130. package/lib/chevre/repository.d.ts +5 -2
  131. package/lib/chevre/repository.js +8 -4
  132. package/lib/chevre/service/aggregation/system.d.ts +110 -23
  133. package/lib/chevre/service/aggregation/system.js +213 -91
  134. package/lib/chevre/service/assetTransaction/cancelReservation.js +1 -28
  135. package/lib/chevre/service/assetTransaction/moneyTransfer.js +2 -24
  136. package/lib/chevre/service/assetTransaction/pay/account/validation.js +1 -1
  137. package/lib/chevre/service/assetTransaction/pay/potentialActions.js +17 -1
  138. package/lib/chevre/service/assetTransaction/pay.d.ts +5 -1
  139. package/lib/chevre/service/assetTransaction/pay.js +20 -34
  140. package/lib/chevre/service/assetTransaction/refund.js +2 -24
  141. package/lib/chevre/service/assetTransaction/registerService.js +1 -25
  142. package/lib/chevre/service/assetTransaction/reserve/factory.d.ts +15 -5
  143. package/lib/chevre/service/assetTransaction/reserve/factory.js +122 -58
  144. package/lib/chevre/service/assetTransaction/reserve.d.ts +10 -1
  145. package/lib/chevre/service/assetTransaction/reserve.js +85 -69
  146. package/lib/chevre/service/assetTransaction.d.ts +6 -2
  147. package/lib/chevre/service/assetTransaction.js +9 -5
  148. package/lib/chevre/service/event.js +16 -5
  149. package/lib/chevre/service/notification/factory.js +2 -2
  150. package/lib/chevre/service/notification.d.ts +3 -1
  151. package/lib/chevre/service/notification.js +41 -7
  152. package/lib/chevre/service/offer/event/authorize.d.ts +3 -0
  153. package/lib/chevre/service/offer/event/authorize.js +8 -2
  154. package/lib/chevre/service/offer/event/factory.d.ts +3 -0
  155. package/lib/chevre/service/offer/event/factory.js +16 -5
  156. package/lib/chevre/service/offer/event/importFromCOA.js +2 -2
  157. package/lib/chevre/service/offer/event/voidTransaction.d.ts +2 -0
  158. package/lib/chevre/service/offer/event/voidTransaction.js +17 -1
  159. package/lib/chevre/service/offer/eventServiceByCOA.js +7 -9
  160. package/lib/chevre/service/offer/product.js +2 -2
  161. package/lib/chevre/service/offer.d.ts +16 -8
  162. package/lib/chevre/service/offer.js +69 -8
  163. package/lib/chevre/service/order/deleteOrder.d.ts +3 -1
  164. package/lib/chevre/service/order/deleteOrder.js +8 -8
  165. package/lib/chevre/service/order/onOrderStatusChanged/factory.d.ts +5 -2
  166. package/lib/chevre/service/order/onOrderStatusChanged/factory.js +41 -81
  167. package/lib/chevre/service/order/onOrderStatusChanged.js +1 -3
  168. package/lib/chevre/service/order/onOrderUpdated.d.ts +16 -0
  169. package/lib/chevre/service/order/onOrderUpdated.js +22 -0
  170. package/lib/chevre/service/order/placeOrder.d.ts +1 -0
  171. package/lib/chevre/service/order/placeOrder.js +41 -24
  172. package/lib/chevre/service/order/returnOrder.d.ts +1 -0
  173. package/lib/chevre/service/order/returnOrder.js +7 -12
  174. package/lib/chevre/service/order/sendOrder.d.ts +1 -0
  175. package/lib/chevre/service/order/sendOrder.js +7 -10
  176. package/lib/chevre/service/order.d.ts +2 -1
  177. package/lib/chevre/service/order.js +3 -1
  178. package/lib/chevre/service/payment/any/onPaid.js +1 -1
  179. package/lib/chevre/service/payment/any/onRefund.js +1 -1
  180. package/lib/chevre/service/payment/any.d.ts +9 -5
  181. package/lib/chevre/service/payment/any.js +80 -18
  182. package/lib/chevre/service/payment/creditCard.d.ts +1 -1
  183. package/lib/chevre/service/payment/creditCard.js +23 -17
  184. package/lib/chevre/service/payment/movieTicket/checkByIdentifier.d.ts +8 -7
  185. package/lib/chevre/service/payment/movieTicket/factory.d.ts +1 -1
  186. package/lib/chevre/service/payment/movieTicket/getCredentials.d.ts +1 -1
  187. package/lib/chevre/service/payment/movieTicket/getCredentials.js +1 -1
  188. package/lib/chevre/service/payment/movieTicket/validation.d.ts +6 -6
  189. package/lib/chevre/service/payment/movieTicket/validation.js +55 -32
  190. package/lib/chevre/service/payment/movieTicket.d.ts +2 -2
  191. package/lib/chevre/service/payment/movieTicket.js +7 -6
  192. package/lib/chevre/service/product.js +1 -5
  193. package/lib/chevre/service/report/telemetry.d.ts +0 -11
  194. package/lib/chevre/service/report/telemetry.js +21 -24
  195. package/lib/chevre/service/reserve/cancelReservation.d.ts +5 -3
  196. package/lib/chevre/service/reserve/cancelReservation.js +147 -139
  197. package/lib/chevre/service/reserve/checkInReservation.d.ts +9 -4
  198. package/lib/chevre/service/reserve/checkInReservation.js +77 -3
  199. package/lib/chevre/service/reserve/confirmReservation.d.ts +7 -4
  200. package/lib/chevre/service/reserve/confirmReservation.js +133 -58
  201. package/lib/chevre/service/reserve/factory.d.ts +1 -1
  202. package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.d.ts +17 -5
  203. package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.js +26 -24
  204. package/lib/chevre/service/reserve/potentialActions/onReservationCheckedIn.js +2 -3
  205. package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +2 -31
  206. package/lib/chevre/service/reserve/potentialActions/onReservationUsed.js +2 -3
  207. package/lib/chevre/service/reserve/useReservation.d.ts +7 -3
  208. package/lib/chevre/service/reserve/useReservation.js +61 -71
  209. package/lib/chevre/service/reserve/verifyToken4reservation.d.ts +15 -0
  210. package/lib/chevre/service/reserve/verifyToken4reservation.js +56 -0
  211. package/lib/chevre/service/reserve.d.ts +3 -2
  212. package/lib/chevre/service/reserve.js +4 -2
  213. package/lib/chevre/service/task/cancelPendingReservation.js +5 -1
  214. package/lib/chevre/service/task/confirmRegisterServiceTransaction.js +1 -1
  215. package/lib/chevre/service/task/deleteTransaction.js +10 -8
  216. package/lib/chevre/service/task/importOffersFromCOA.js +4 -0
  217. package/lib/chevre/service/task/onAuthorizationCreated.d.ts +7 -0
  218. package/lib/chevre/service/task/onAuthorizationCreated.js +108 -0
  219. package/lib/chevre/service/task/onEventChanged.d.ts +7 -0
  220. package/lib/chevre/service/task/{deleteOrder.js → onEventChanged.js} +8 -14
  221. package/lib/chevre/service/task/onResourceUpdated.d.ts +7 -0
  222. package/lib/chevre/service/task/onResourceUpdated.js +199 -0
  223. package/lib/chevre/service/task/placeOrder.js +1 -1
  224. package/lib/chevre/service/task/reserve.js +10 -7
  225. package/lib/chevre/service/task/returnOrder.js +1 -1
  226. package/lib/chevre/service/task/returnPayTransaction.js +2 -12
  227. package/lib/chevre/service/task/sendOrder.js +1 -1
  228. package/lib/chevre/service/task/useReservation.d.ts +7 -0
  229. package/lib/chevre/service/task/useReservation.js +36 -0
  230. package/lib/chevre/service/task/voidReserveTransaction.js +3 -1
  231. package/lib/chevre/service/task.d.ts +9 -0
  232. package/lib/chevre/service/task.js +43 -4
  233. package/lib/chevre/service/transaction/deleteTransaction.d.ts +21 -0
  234. package/lib/chevre/service/transaction/deleteTransaction.js +232 -0
  235. package/lib/chevre/service/transaction/moneyTransfer/exportTasks/factory.js +11 -1
  236. package/lib/chevre/service/transaction/moneyTransfer/factory.d.ts +1 -1
  237. package/lib/chevre/service/transaction/moneyTransfer/factory.js +3 -1
  238. package/lib/chevre/service/transaction/moneyTransfer/potentialActions.d.ts +1 -0
  239. package/lib/chevre/service/transaction/moneyTransfer/potentialActions.js +1 -1
  240. package/lib/chevre/service/transaction/moneyTransfer.js +10 -13
  241. package/lib/chevre/service/transaction/orderProgramMembership/findCreditCard.js +1 -1
  242. package/lib/chevre/service/transaction/orderProgramMembership/findPaymentCardPermit.js +1 -1
  243. package/lib/chevre/service/transaction/orderProgramMembership.js +7 -3
  244. package/lib/chevre/service/transaction/placeOrder/exportTasks/factory.js +42 -30
  245. package/lib/chevre/service/transaction/placeOrder.js +1 -5
  246. package/lib/chevre/service/transaction/placeOrderInProgress/factory.js +1 -1
  247. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.d.ts +1 -0
  248. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/moneyTransfer.js +1 -1
  249. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.d.ts +1 -0
  250. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.js +1 -1
  251. package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions.d.ts +1 -0
  252. package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.d.ts +3 -0
  253. package/lib/chevre/service/transaction/placeOrderInProgress/result/acceptedOffers.js +7 -3
  254. package/lib/chevre/service/transaction/placeOrderInProgress/result.d.ts +1 -0
  255. package/lib/chevre/service/transaction/placeOrderInProgress/result.js +2 -2
  256. package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.d.ts +1 -1
  257. package/lib/chevre/service/transaction/placeOrderInProgress/validation/validateMovieTicket.js +2 -2
  258. package/lib/chevre/service/transaction/placeOrderInProgress/validation.d.ts +2 -1
  259. package/lib/chevre/service/transaction/placeOrderInProgress/validation.js +23 -17
  260. package/lib/chevre/service/transaction/placeOrderInProgress.d.ts +0 -3
  261. package/lib/chevre/service/transaction/placeOrderInProgress.js +28 -15
  262. package/lib/chevre/service/transaction/returnOrder/exportTasks/factory.js +10 -1
  263. package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +25 -17
  264. package/lib/chevre/service/transaction/returnOrder.d.ts +4 -0
  265. package/lib/chevre/service/transaction/returnOrder.js +228 -36
  266. package/lib/chevre/service/transaction.d.ts +8 -13
  267. package/lib/chevre/service/transaction.js +12 -145
  268. package/lib/chevre/settings.d.ts +11 -1
  269. package/lib/chevre/settings.js +50 -6
  270. package/package.json +5 -5
  271. package/example/src/chevre/createManyEventsIfNotExist.ts +0 -205
  272. package/example/src/chevre/eventCatalog2eventService.ts +0 -123
  273. package/example/src/chevre/migrateMoneyTransferPendingTransactionIdentifier.ts +0 -96
  274. package/example/src/chevre/migrateMovieAdditionalProperties.ts +0 -98
  275. package/lib/chevre/service/task/deleteAssetTransaction.d.ts +0 -12
  276. package/lib/chevre/service/task/deleteAssetTransaction.js +0 -65
  277. package/lib/chevre/service/task/deleteOrder.d.ts +0 -6
@@ -13,6 +13,8 @@ exports.MongoRepository = void 0;
13
13
  const moment = require("moment");
14
14
  const factory = require("../factory");
15
15
  const task_1 = require("./mongoose/schemas/task");
16
+ const task_2 = require("../eventEmitter/task");
17
+ const settings_1 = require("../settings");
16
18
  /**
17
19
  * タスク実行時のソート条件
18
20
  */
@@ -149,27 +151,43 @@ class MongoRepository {
149
151
  }
150
152
  return andConditions;
151
153
  }
152
- saveMany(taskAttributes) {
154
+ saveMany(taskAttributes, options) {
153
155
  return __awaiter(this, void 0, void 0, function* () {
156
+ const emitImmediately = (options === null || options === void 0 ? void 0 : options.emitImmediately) === true;
154
157
  if (taskAttributes.length > 0) {
155
158
  const result = yield this.taskModel.insertMany(taskAttributes, { ordered: false, rawResult: true });
156
159
  if (result.insertedCount !== taskAttributes.length) {
157
160
  throw new factory.errors.ServiceUnavailable('all tasks not saved');
158
161
  }
159
- // return result.ops;
160
- return Object.values(result.insertedIds)
162
+ const savedTasks = Object.values(result.insertedIds)
161
163
  .map((objectId) => {
162
164
  return { id: objectId.toHexString() };
163
165
  });
166
+ if (emitImmediately) {
167
+ savedTasks.forEach((savedTask) => {
168
+ task_2.taskEventEmitter.emitTaskStatusChanged({
169
+ id: savedTask.id,
170
+ status: factory.taskStatus.Ready
171
+ });
172
+ });
173
+ // taskAttributes.forEach((savedTask) => {
174
+ // taskEventEmitter.emitTaskStatusChanged({
175
+ // name: savedTask.name,
176
+ // status: factory.taskStatus.Ready
177
+ // });
178
+ // });
179
+ }
180
+ // return result.ops;
181
+ return savedTasks;
164
182
  }
165
183
  else {
166
184
  return [];
167
185
  }
168
186
  });
169
187
  }
170
- createInformTaskIfNotExist(params) {
188
+ createInformTaskIfNotExist(params, options) {
171
189
  return __awaiter(this, void 0, void 0, function* () {
172
- yield this.taskModel.findOneAndUpdate({
190
+ const createdTask = yield this.taskModel.findOneAndUpdate({
173
191
  'project.id': { $eq: params.project.id },
174
192
  name: params.name,
175
193
  'data.object.id': {
@@ -177,7 +195,38 @@ class MongoRepository {
177
195
  $eq: String(params.data.object.id)
178
196
  }
179
197
  }, { $setOnInsert: params }, { new: true, upsert: true })
198
+ .select({ _id: 1 })
199
+ .exec();
200
+ if (options.emitImmediately) {
201
+ task_2.taskEventEmitter.emitTaskStatusChanged({
202
+ id: createdTask.id,
203
+ name: params.name,
204
+ status: factory.taskStatus.Ready
205
+ });
206
+ }
207
+ });
208
+ }
209
+ executeById(params) {
210
+ return __awaiter(this, void 0, void 0, function* () {
211
+ const doc = yield this.taskModel.findOneAndUpdate({
212
+ status: factory.taskStatus.Ready,
213
+ runsAt: { $lt: new Date() },
214
+ _id: { $eq: params.id }
215
+ }, {
216
+ status: factory.taskStatus.Running,
217
+ lastTriedAt: new Date(),
218
+ $inc: {
219
+ remainingNumberOfTries: -1,
220
+ numberOfTried: 1 // トライ回数増やす
221
+ },
222
+ executor: params.executor
223
+ }, { new: true })
180
224
  .exec();
225
+ if (doc === null) {
226
+ // tslint:disable-next-line:no-null-keyword
227
+ return null;
228
+ }
229
+ return doc.toObject();
181
230
  });
182
231
  }
183
232
  executeOneByName(params) {
@@ -192,7 +241,8 @@ class MongoRepository {
192
241
  $inc: {
193
242
  remainingNumberOfTries: -1,
194
243
  numberOfTried: 1 // トライ回数増やす
195
- }
244
+ },
245
+ executor: params.executor
196
246
  }, { new: true })
197
247
  .sort(sortOrder4executionOfTasks)
198
248
  .exec();
@@ -203,6 +253,35 @@ class MongoRepository {
203
253
  return doc.toObject();
204
254
  });
205
255
  }
256
+ /**
257
+ * 一定期間遅延したタスクを実行する
258
+ */
259
+ executeTasks(params) {
260
+ return __awaiter(this, void 0, void 0, function* () {
261
+ const runsAtLt = moment(params.now)
262
+ .add(-params.delayInSeconds, 'seconds')
263
+ .toDate();
264
+ const delayedTasks = yield this.taskModel.find(Object.assign(Object.assign({ status: { $eq: factory.taskStatus.Ready }, runsAt: { $lt: runsAtLt } }, (Array.isArray(params.name.$in)) ? { name: { $in: params.name.$in } } : undefined), (Array.isArray(params.name.$nin)) ? { name: { $nin: params.name.$nin } } : undefined))
265
+ .select({
266
+ _id: 1,
267
+ name: 1,
268
+ status: 1
269
+ })
270
+ .limit(params.limit)
271
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
272
+ .exec();
273
+ if (delayedTasks.length > 0) {
274
+ delayedTasks.forEach((delayedTask) => {
275
+ task_2.taskEventEmitter.emitTaskStatusChanged({
276
+ id: delayedTask.id,
277
+ name: delayedTask.name,
278
+ status: delayedTask.status
279
+ });
280
+ });
281
+ }
282
+ return delayedTasks;
283
+ });
284
+ }
206
285
  retry(params) {
207
286
  return __awaiter(this, void 0, void 0, function* () {
208
287
  const lastTriedAtShoudBeLessThan = moment()
@@ -297,7 +376,7 @@ class MongoRepository {
297
376
  return __awaiter(this, void 0, void 0, function* () {
298
377
  const conditions = MongoRepository.CREATE_MONGO_CONDITIONS(params);
299
378
  return this.taskModel.countDocuments((conditions.length > 0) ? { $and: conditions } : {})
300
- .setOptions({ maxTimeMS: 10000 })
379
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
301
380
  .exec();
302
381
  });
303
382
  }
@@ -319,7 +398,7 @@ class MongoRepository {
319
398
  if (((_a = params.sort) === null || _a === void 0 ? void 0 : _a.runsAt) !== undefined) {
320
399
  query.sort({ runsAt: params.sort.runsAt });
321
400
  }
322
- return query.setOptions({ maxTimeMS: 10000 })
401
+ return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
323
402
  .exec()
324
403
  .then((docs) => docs.map((doc) => doc.toObject()));
325
404
  });
@@ -333,10 +412,13 @@ class MongoRepository {
333
412
  });
334
413
  }
335
414
  deleteByName(params) {
415
+ var _a, _b;
336
416
  return __awaiter(this, void 0, void 0, function* () {
337
- return this.taskModel.deleteMany({
338
- name: { $eq: params.name }
339
- })
417
+ return this.taskModel.deleteMany(Object.assign(Object.assign({ name: { $eq: params.name } }, (typeof ((_a = params.status) === null || _a === void 0 ? void 0 : _a.$eq) === 'string') ? { status: { $eq: params.status.$eq } } : undefined), (((_b = params.runsAt) === null || _b === void 0 ? void 0 : _b.$gte) instanceof Date)
418
+ ? {
419
+ runsAt: { $gte: params.runsAt.$gte, $lte: params.runsAt.$lte }
420
+ }
421
+ : undefined))
340
422
  .exec();
341
423
  });
342
424
  }
@@ -40,6 +40,8 @@ export declare class MongoRepository {
40
40
  findById<T extends factory.transactionType>(params: {
41
41
  typeOf: T;
42
42
  id: string;
43
+ inclusion?: string[];
44
+ exclusion?: string[];
43
45
  }): Promise<factory.transaction.ITransaction<T>>;
44
46
  /**
45
47
  * 進行中の取引を取得する
@@ -88,7 +90,6 @@ export declare class MongoRepository {
88
90
  id: string;
89
91
  object?: {
90
92
  name?: string;
91
- dateOnTransactionStatusChangedEmitted?: Date;
92
93
  };
93
94
  }): Promise<void>;
94
95
  /**
@@ -112,7 +113,13 @@ export declare class MongoRepository {
112
113
  $in: T[];
113
114
  };
114
115
  status: factory.transactionStatusType;
115
- }): Promise<factory.transaction.ITransaction<T> | null>;
116
+ id?: string;
117
+ tasksExportAction: {
118
+ agent: {
119
+ name: string;
120
+ };
121
+ };
122
+ }): Promise<Pick<factory.transaction.ITransaction<T>, 'id' | 'typeOf'> | null>;
116
123
  /**
117
124
  * タスクエクスポートリトライ
118
125
  * TODO updatedAtを基準にしているが、タスクエクスポートトライ日時を持たせた方が安全か?
@@ -120,6 +127,16 @@ export declare class MongoRepository {
120
127
  reexportTasks(params: {
121
128
  intervalInMinutes: number;
122
129
  }): Promise<void>;
130
+ /**
131
+ * タスクエクスポートの遅延している取引について明示的にemitTransactionStatusChangedを実行する
132
+ */
133
+ exportTasks(params: {
134
+ now: Date;
135
+ delayInSeconds: number;
136
+ status: {
137
+ $in: factory.transactionStatusType[];
138
+ };
139
+ }): Promise<Pick<import("@chevre/factory/lib/transaction/moneyTransfer").ITransaction | import("@chevre/factory/lib/transaction/placeOrder").ITransaction | import("@chevre/factory/lib/transaction/returnOrder").ITransaction, "id" | "typeOf" | "status">[]>;
123
140
  /**
124
141
  * set task status exported by transaction id
125
142
  * IDでタスクをエクスポート済に変更する
@@ -131,7 +148,9 @@ export declare class MongoRepository {
131
148
  * 取引を期限切れにする
132
149
  */
133
150
  makeExpired(params: {
134
- expires: Date;
151
+ expires: {
152
+ $lt: Date;
153
+ };
135
154
  }): Promise<void>;
136
155
  /**
137
156
  * 取引を中止する
@@ -151,7 +170,7 @@ export declare class MongoRepository {
151
170
  /**
152
171
  * 特定の取引を更新する(汎用)
153
172
  */
154
- findByIdAndUpdate(params: {
173
+ findByIdAndUpdateInProgress(params: {
155
174
  id: string;
156
175
  update: {
157
176
  $set?: any;
@@ -13,6 +13,8 @@ exports.MongoRepository = void 0;
13
13
  const moment = require("moment");
14
14
  const factory = require("../factory");
15
15
  const transaction_1 = require("./mongoose/schemas/transaction");
16
+ const transaction_2 = require("../eventEmitter/transaction");
17
+ const settings_1 = require("../settings");
16
18
  /**
17
19
  * 取引リポジトリ
18
20
  */
@@ -263,7 +265,9 @@ class MongoRepository {
263
265
  else {
264
266
  expires = params.expires;
265
267
  }
266
- return this.transactionModel.create(Object.assign(Object.assign({}, params), { typeOf: params.typeOf, status: factory.transactionStatusType.InProgress, startDate, endDate: undefined, expires, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }))
268
+ return this.transactionModel.create(Object.assign(Object.assign({}, params), { typeOf: params.typeOf, status: factory.transactionStatusType.InProgress, startDate, endDate: undefined, expires, tasksExportAction: {
269
+ actionStatus: factory.actionStatusType.PotentialActionStatus
270
+ }, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }))
267
271
  .then((doc) => doc.toObject());
268
272
  });
269
273
  }
@@ -272,10 +276,29 @@ class MongoRepository {
272
276
  */
273
277
  findById(params) {
274
278
  return __awaiter(this, void 0, void 0, function* () {
279
+ let projection = {};
280
+ if (Array.isArray(params.inclusion) && params.inclusion.length > 0) {
281
+ params.inclusion.forEach((field) => {
282
+ projection[field] = 1;
283
+ });
284
+ }
285
+ else {
286
+ projection = {
287
+ __v: 0,
288
+ createdAt: 0,
289
+ updatedAt: 0
290
+ };
291
+ if (Array.isArray(params.exclusion) && params.exclusion.length > 0) {
292
+ params.exclusion.forEach((field) => {
293
+ projection[field] = 0;
294
+ });
295
+ }
296
+ }
275
297
  const doc = yield this.transactionModel.findOne({
276
298
  _id: { $eq: params.id },
277
299
  typeOf: { $eq: params.typeOf }
278
300
  })
301
+ .select(projection)
279
302
  .exec();
280
303
  if (doc === null) {
281
304
  throw new factory.errors.NotFound(this.transactionModel.modelName);
@@ -291,7 +314,9 @@ class MongoRepository {
291
314
  const doc = yield this.transactionModel.findOne({
292
315
  _id: { $eq: params.id },
293
316
  typeOf: { $eq: params.typeOf },
294
- status: { $eq: factory.transactionStatusType.InProgress }
317
+ status: { $eq: factory.transactionStatusType.InProgress },
318
+ // expiresを条件に追加(2023-05-12~),
319
+ expires: { $gt: new Date() }
295
320
  })
296
321
  .exec();
297
322
  if (doc === null) {
@@ -343,9 +368,9 @@ class MongoRepository {
343
368
  var _a, _b;
344
369
  return __awaiter(this, void 0, void 0, function* () {
345
370
  const doc = yield this.transactionModel.findOneAndUpdate({
346
- _id: params.id,
347
- typeOf: params.typeOf,
348
- status: factory.transactionStatusType.InProgress
371
+ _id: { $eq: params.id },
372
+ typeOf: { $eq: params.typeOf },
373
+ status: { $eq: factory.transactionStatusType.InProgress }
349
374
  }, {
350
375
  $set: Object.assign(Object.assign({ 'agent.id': params.agent.id }, (typeof params.agent.name === 'string') ? { 'agent.name': params.agent.name } : undefined), (typeof ((_b = (_a = params.object) === null || _a === void 0 ? void 0 : _a.customer) === null || _b === void 0 ? void 0 : _b.typeOf) === 'string') ? { 'object.customer': params.object.customer } : undefined)
351
376
  }, {
@@ -363,9 +388,9 @@ class MongoRepository {
363
388
  updateExpires(params) {
364
389
  return __awaiter(this, void 0, void 0, function* () {
365
390
  const doc = yield this.transactionModel.findOneAndUpdate({
366
- _id: params.id,
367
- typeOf: params.typeOf,
368
- status: factory.transactionStatusType.InProgress
391
+ _id: { $eq: params.id },
392
+ typeOf: { $eq: params.typeOf },
393
+ status: { $eq: factory.transactionStatusType.InProgress }
369
394
  }, {
370
395
  $set: {
371
396
  expires: params.expires
@@ -384,16 +409,14 @@ class MongoRepository {
384
409
  * 注文名称など
385
410
  */
386
411
  updateObject(params) {
387
- var _a, _b;
412
+ var _a;
388
413
  return __awaiter(this, void 0, void 0, function* () {
389
414
  const doc = yield this.transactionModel.findOneAndUpdate({
390
- _id: params.id,
391
- typeOf: params.typeOf,
392
- status: factory.transactionStatusType.InProgress
415
+ _id: { $eq: params.id },
416
+ typeOf: { $eq: params.typeOf },
417
+ status: { $eq: factory.transactionStatusType.InProgress }
393
418
  }, {
394
- $set: Object.assign(Object.assign({}, (typeof ((_a = params.object) === null || _a === void 0 ? void 0 : _a.name) === 'string') ? { 'object.name': params.object.name } : undefined), (((_b = params.object) === null || _b === void 0 ? void 0 : _b.dateOnTransactionStatusChangedEmitted) instanceof Date)
395
- ? { 'object.dateOnTransactionStatusChangedEmitted': params.object.dateOnTransactionStatusChangedEmitted }
396
- : undefined)
419
+ $set: Object.assign({}, (typeof ((_a = params.object) === null || _a === void 0 ? void 0 : _a.name) === 'string') ? { 'object.name': params.object.name } : undefined)
397
420
  }, {
398
421
  projection: { _id: 1 }
399
422
  })
@@ -409,9 +432,9 @@ class MongoRepository {
409
432
  confirm(params) {
410
433
  return __awaiter(this, void 0, void 0, function* () {
411
434
  const doc = yield this.transactionModel.findOneAndUpdate({
412
- _id: params.id,
413
- typeOf: params.typeOf,
414
- status: factory.transactionStatusType.InProgress
435
+ _id: { $eq: params.id },
436
+ typeOf: { $eq: params.typeOf },
437
+ status: { $eq: factory.transactionStatusType.InProgress }
415
438
  }, {
416
439
  status: factory.transactionStatusType.Confirmed,
417
440
  endDate: new Date(),
@@ -426,43 +449,49 @@ class MongoRepository {
426
449
  // NotFoundであれば取引状態確認
427
450
  if (doc === null) {
428
451
  const transaction = yield this.findById({ typeOf: params.typeOf, id: params.id });
429
- // tslint:disable-next-line:no-single-line-block-comment
430
- /* istanbul ignore next */
431
452
  if (transaction.status === factory.transactionStatusType.Confirmed) {
432
- // すでに確定済の場合
433
- return;
434
- // tslint:disable-next-line:no-single-line-block-comment
435
- /* istanbul ignore next */
453
+ // すでに確定済の場合スルー
436
454
  }
437
455
  else if (transaction.status === factory.transactionStatusType.Expired) {
438
456
  throw new factory.errors.Argument('Transaction id', 'Already expired');
439
- // tslint:disable-next-line:no-single-line-block-comment
440
- /* istanbul ignore next */
441
457
  }
442
458
  else if (transaction.status === factory.transactionStatusType.Canceled) {
443
459
  throw new factory.errors.Argument('Transaction id', 'Already canceled');
444
- // tslint:disable-next-line:no-single-line-block-comment
445
- /* istanbul ignore next */
446
460
  }
447
461
  else {
448
462
  throw new factory.errors.NotFound(this.transactionModel.modelName);
449
463
  }
450
464
  }
451
- // return doc.toObject();
465
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
466
+ id: params.id,
467
+ typeOf: params.typeOf,
468
+ status: factory.transactionStatusType.Confirmed
469
+ });
452
470
  });
453
471
  }
454
472
  /**
455
473
  * タスク未エクスポートの取引をひとつ取得してエクスポートを開始する
456
474
  */
457
475
  startExportTasks(params) {
476
+ var _a;
458
477
  return __awaiter(this, void 0, void 0, function* () {
459
- return this.transactionModel.findOneAndUpdate(Object.assign(Object.assign(Object.assign({}, (params.project !== undefined)
460
- ? {
461
- 'project.id': {
462
- $eq: params.project.id
463
- }
464
- } : undefined), (params.typeOf !== undefined && params.typeOf !== null && Array.isArray(params.typeOf.$in))
465
- ? { typeOf: { $in: params.typeOf.$in } } : undefined), { status: params.status, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }), { tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting }, { new: true })
478
+ switch (params.status) {
479
+ case factory.transactionStatusType.InProgress:
480
+ throw new factory.errors.NotImplemented(`status "${params.status}" not implemented on startExportTasks`);
481
+ default:
482
+ // no op
483
+ }
484
+ const typeOfIn = (_a = params.typeOf) === null || _a === void 0 ? void 0 : _a.$in;
485
+ return this.transactionModel.findOneAndUpdate(Object.assign(Object.assign(Object.assign(Object.assign({}, (params.project !== undefined) ? { 'project.id': { $eq: params.project.id } } : undefined), (Array.isArray(typeOfIn)) ? { typeOf: { $in: typeOfIn } } : undefined), { status: { $eq: params.status }, tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Unexported } }), (typeof params.id === 'string') ? { _id: { $eq: params.id } } : undefined), {
486
+ 'tasksExportAction.actionStatus': factory.actionStatusType.ActiveActionStatus,
487
+ 'tasksExportAction.agent': { name: params.tasksExportAction.agent.name },
488
+ 'tasksExportAction.startDate': new Date(),
489
+ tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting
490
+ }, { new: true })
491
+ .select({
492
+ _id: 1,
493
+ typeOf: 1
494
+ })
466
495
  .exec()
467
496
  // tslint:disable-next-line:no-null-keyword
468
497
  .then((doc) => (doc === null) ? null : doc.toObject());
@@ -475,17 +504,74 @@ class MongoRepository {
475
504
  */
476
505
  reexportTasks(params) {
477
506
  return __awaiter(this, void 0, void 0, function* () {
478
- yield this.transactionModel.updateMany({
479
- tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting,
507
+ const reexportingTransactions = yield this.transactionModel.find({
508
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting },
480
509
  updatedAt: {
481
510
  $lt: moment()
482
511
  .add(-params.intervalInMinutes, 'minutes')
483
512
  .toDate()
484
513
  }
485
- }, {
486
- tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported
487
514
  })
515
+ .select({
516
+ _id: 1,
517
+ typeOf: 1,
518
+ status: 1
519
+ })
520
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
488
521
  .exec();
522
+ if (reexportingTransactions.length > 0) {
523
+ for (const reexportingTransaction of reexportingTransactions) {
524
+ yield this.transactionModel.updateOne({
525
+ _id: { $eq: reexportingTransaction.id },
526
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting }
527
+ }, {
528
+ tasksExportAction: {
529
+ actionStatus: factory.actionStatusType.PotentialActionStatus
530
+ },
531
+ tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported
532
+ })
533
+ .exec();
534
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
535
+ id: reexportingTransaction.id,
536
+ typeOf: reexportingTransaction.typeOf,
537
+ status: reexportingTransaction.status
538
+ });
539
+ }
540
+ }
541
+ });
542
+ }
543
+ /**
544
+ * タスクエクスポートの遅延している取引について明示的にemitTransactionStatusChangedを実行する
545
+ */
546
+ exportTasks(params) {
547
+ return __awaiter(this, void 0, void 0, function* () {
548
+ const delayedTransactions = yield this.transactionModel.find({
549
+ status: { $in: params.status.$in },
550
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Unexported },
551
+ endDate: {
552
+ $exists: true,
553
+ $lt: moment(params.now)
554
+ .add(-params.delayInSeconds, 'seconds')
555
+ .toDate()
556
+ }
557
+ })
558
+ .select({
559
+ _id: 1,
560
+ typeOf: 1,
561
+ status: 1
562
+ })
563
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
564
+ .exec();
565
+ if (delayedTransactions.length > 0) {
566
+ delayedTransactions.forEach((delayedTransaction) => {
567
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
568
+ id: delayedTransaction.id,
569
+ typeOf: delayedTransaction.typeOf,
570
+ status: delayedTransaction.status
571
+ });
572
+ });
573
+ }
574
+ return delayedTransactions;
489
575
  });
490
576
  }
491
577
  /**
@@ -494,9 +580,15 @@ class MongoRepository {
494
580
  */
495
581
  setTasksExportedById(params) {
496
582
  return __awaiter(this, void 0, void 0, function* () {
497
- yield this.transactionModel.findByIdAndUpdate(params.id, {
583
+ const endDate = new Date();
584
+ yield this.transactionModel.updateOne({
585
+ _id: { $eq: params.id },
586
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting }
587
+ }, {
498
588
  tasksExportationStatus: factory.transactionTasksExportationStatus.Exported,
499
- tasksExportedAt: new Date()
589
+ tasksExportedAt: endDate,
590
+ 'tasksExportAction.actionStatus': factory.actionStatusType.CompletedActionStatus,
591
+ 'tasksExportAction.endDate': endDate
500
592
  })
501
593
  .exec();
502
594
  });
@@ -506,15 +598,36 @@ class MongoRepository {
506
598
  */
507
599
  makeExpired(params) {
508
600
  return __awaiter(this, void 0, void 0, function* () {
509
- // ステータスと期限を見て更新
510
- yield this.transactionModel.updateMany({
511
- status: factory.transactionStatusType.InProgress,
512
- expires: { $lt: params.expires }
513
- }, {
514
- status: factory.transactionStatusType.Expired,
515
- endDate: new Date()
601
+ // IDをemitしたいのでまずリスト検索(2023-04-27~)
602
+ const expiringTransactions = yield this.transactionModel.find({
603
+ status: { $eq: factory.transactionStatusType.InProgress },
604
+ expires: { $lt: params.expires.$lt }
605
+ })
606
+ .select({
607
+ _id: 1,
608
+ typeOf: 1
516
609
  })
610
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
517
611
  .exec();
612
+ if (expiringTransactions.length > 0) {
613
+ // ステータスと期限を見て更新
614
+ yield this.transactionModel.updateMany({
615
+ _id: { $in: expiringTransactions.map((t) => t.id) },
616
+ status: { $eq: factory.transactionStatusType.InProgress },
617
+ expires: { $lt: params.expires.$lt }
618
+ }, {
619
+ status: factory.transactionStatusType.Expired,
620
+ endDate: new Date()
621
+ })
622
+ .exec();
623
+ expiringTransactions.forEach((expiringTransaction) => {
624
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
625
+ id: expiringTransaction.id,
626
+ typeOf: expiringTransaction.typeOf,
627
+ status: factory.transactionStatusType.Expired
628
+ });
629
+ });
630
+ }
518
631
  });
519
632
  }
520
633
  /**
@@ -539,11 +652,8 @@ class MongoRepository {
539
652
  // NotFoundであれば取引状態確認
540
653
  if (doc === null) {
541
654
  const transaction = yield this.findById(params);
542
- // tslint:disable-next-line:no-single-line-block-comment
543
- /* istanbul ignore next */
544
655
  if (transaction.status === factory.transactionStatusType.Canceled) {
545
- // すでに中止済の場合
546
- return;
656
+ // すでに中止済の場合スルー
547
657
  }
548
658
  else if (transaction.status === factory.transactionStatusType.Expired) {
549
659
  throw new factory.errors.Argument('Transaction id', 'Transaction already expired');
@@ -555,14 +665,18 @@ class MongoRepository {
555
665
  throw new factory.errors.NotFound(this.transactionModel.modelName);
556
666
  }
557
667
  }
558
- // return doc.toObject();
668
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
669
+ id: params.id,
670
+ typeOf: params.typeOf,
671
+ status: factory.transactionStatusType.Canceled
672
+ });
559
673
  });
560
674
  }
561
675
  count(params) {
562
676
  return __awaiter(this, void 0, void 0, function* () {
563
677
  const conditions = MongoRepository.CREATE_MONGO_CONDITIONS(params);
564
678
  return this.transactionModel.countDocuments((conditions.length > 0) ? { $and: conditions } : {})
565
- .setOptions({ maxTimeMS: 10000 })
679
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
566
680
  .exec();
567
681
  });
568
682
  }
@@ -605,7 +719,7 @@ class MongoRepository {
605
719
  }
606
720
  // const explainResult = await (<any>query).explain();
607
721
  // console.log(explainResult[0].executionStats.allPlansExecution.map((e: any) => e.executionStages.inputStage));
608
- return query.setOptions({ maxTimeMS: 10000 })
722
+ return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
609
723
  .exec()
610
724
  .then((docs) => docs.map((doc) => doc.toObject()));
611
725
  });
@@ -613,9 +727,12 @@ class MongoRepository {
613
727
  /**
614
728
  * 特定の取引を更新する(汎用)
615
729
  */
616
- findByIdAndUpdate(params) {
730
+ findByIdAndUpdateInProgress(params) {
617
731
  return __awaiter(this, void 0, void 0, function* () {
618
- yield this.transactionModel.findOneAndUpdate({ _id: params.id }, params.update, {
732
+ yield this.transactionModel.findOneAndUpdate({
733
+ _id: { $eq: params.id },
734
+ status: { $eq: factory.transactionStatusType.InProgress }
735
+ }, params.update, {
619
736
  // new: true,
620
737
  projection: { _id: 1 }
621
738
  })
@@ -630,7 +747,8 @@ class MongoRepository {
630
747
  saveOrderNumberIfNotExist(params) {
631
748
  return __awaiter(this, void 0, void 0, function* () {
632
749
  yield this.transactionModel.updateOne({
633
- _id: params.id,
750
+ _id: { $eq: params.id },
751
+ status: { $eq: factory.transactionStatusType.InProgress },
634
752
  'object.orderNumber': { $exists: false }
635
753
  }, { 'object.orderNumber': params.orderNumber })
636
754
  .exec();
@@ -639,7 +757,8 @@ class MongoRepository {
639
757
  saveConfirmationNumberIfNotExist(params) {
640
758
  return __awaiter(this, void 0, void 0, function* () {
641
759
  yield this.transactionModel.updateOne({
642
- _id: params.id,
760
+ _id: { $eq: params.id },
761
+ status: { $eq: factory.transactionStatusType.InProgress },
643
762
  'object.confirmationNumber': { $exists: false }
644
763
  }, { 'object.confirmationNumber': params.confirmationNumber })
645
764
  .exec();
@@ -23,6 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.MongoRepository = void 0;
24
24
  const factory = require("../factory");
25
25
  const trip_1 = require("./mongoose/schemas/trip");
26
+ const settings_1 = require("../settings");
26
27
  /**
27
28
  * トリップリポジトリ
28
29
  */
@@ -193,7 +194,7 @@ class MongoRepository {
193
194
  // console.log(explainResult[0].queryPlanner?.winningPlan?.inputStage?.inputStage?.inputStage);
194
195
  // console.log(explainResult);
195
196
  // return [];
196
- return query.setOptions({ maxTimeMS: 10000 })
197
+ return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
197
198
  .exec()
198
199
  .then((docs) => docs.map((doc) => doc.toObject()));
199
200
  });