@chevre/domain 21.2.0-alpha.32 → 21.2.0-alpha.34

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.
@@ -111,6 +111,13 @@ export declare class MongoRepository {
111
111
  reexportTasks(params: {
112
112
  intervalInMinutes: number;
113
113
  }): Promise<void>;
114
+ /**
115
+ * タスクエクスポートの遅延している取引について明示的にemitTransactionStatusChangedを実行する
116
+ */
117
+ exportTasks(params: {
118
+ now: Date;
119
+ delayInSeconds: number;
120
+ }): Promise<Pick<import("@chevre/factory/lib/assetTransaction/cancelReservation").ITransaction | import("@chevre/factory/lib/assetTransaction/moneyTransfer").ITransaction | import("@chevre/factory/lib/assetTransaction/reserve").ITransaction | import("@chevre/factory/lib/assetTransaction/pay").ITransaction | import("@chevre/factory/lib/assetTransaction/refund").ITransaction | import("@chevre/factory/lib/assetTransaction/registerService").ITransaction, "typeOf" | "id" | "status">[]>;
114
121
  /**
115
122
  * set task status exported by transaction id
116
123
  * IDでタスクをエクスポート済に変更する
@@ -248,7 +248,9 @@ class MongoRepository {
248
248
  */
249
249
  start(params) {
250
250
  return __awaiter(this, void 0, void 0, function* () {
251
- return this.transactionModel.create(Object.assign(Object.assign({}, params), { typeOf: params.typeOf, status: factory.transactionStatusType.InProgress, startDate: new Date(), endDate: undefined, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }))
251
+ return this.transactionModel.create(Object.assign(Object.assign({}, params), { typeOf: params.typeOf, status: factory.transactionStatusType.InProgress, startDate: new Date(), endDate: undefined, tasksExportAction: {
252
+ actionStatus: factory.actionStatusType.PotentialActionStatus
253
+ }, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }))
252
254
  .then((doc) => doc.toObject());
253
255
  });
254
256
  }
@@ -349,7 +351,9 @@ class MongoRepository {
349
351
  */
350
352
  startAndConfirm(params) {
351
353
  return __awaiter(this, void 0, void 0, function* () {
352
- return this.transactionModel.create(Object.assign(Object.assign({ _id: params.id, typeOf: params.typeOf }, params), { startDate: new Date(), status: factory.transactionStatusType.Confirmed, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported, endDate: new Date(), result: params.result, potentialActions: params.potentialActions }))
354
+ return this.transactionModel.create(Object.assign(Object.assign({}, params), { _id: params.id, typeOf: params.typeOf, startDate: new Date(), status: factory.transactionStatusType.Confirmed, tasksExportAction: {
355
+ actionStatus: factory.actionStatusType.PotentialActionStatus
356
+ }, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported, endDate: new Date(), result: params.result, potentialActions: params.potentialActions }))
353
357
  .then((doc) => doc.toObject());
354
358
  });
355
359
  }
@@ -367,10 +371,9 @@ class MongoRepository {
367
371
  }
368
372
  const typeOfIn = (_a = params.typeOf) === null || _a === void 0 ? void 0 : _a.$in;
369
373
  return this.transactionModel.findOneAndUpdate(Object.assign(Object.assign(Object.assign(Object.assign({}, (typeof ((_b = params.project) === null || _b === void 0 ? void 0 : _b.id) === 'string') ? { '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), {
370
- tasksExportAction: {
371
- agent: { name: params.tasksExportAction.agent.name },
372
- startDate: new Date()
373
- },
374
+ 'tasksExportAction.actionStatus': factory.actionStatusType.ActiveActionStatus,
375
+ 'tasksExportAction.agent': { name: params.tasksExportAction.agent.name },
376
+ 'tasksExportAction.startDate': new Date(),
374
377
  tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting
375
378
  }, { new: true })
376
379
  .select({
@@ -410,6 +413,9 @@ class MongoRepository {
410
413
  _id: { $eq: reexportingTransaction.id },
411
414
  tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting }
412
415
  }, {
416
+ tasksExportAction: {
417
+ actionStatus: factory.actionStatusType.PotentialActionStatus
418
+ },
413
419
  tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported
414
420
  })
415
421
  .exec();
@@ -420,20 +426,46 @@ class MongoRepository {
420
426
  });
421
427
  }
422
428
  }
423
- // await this.transactionModel.updateMany(
424
- // {
425
- // tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting },
426
- // updatedAt: {
427
- // $lt: moment()
428
- // .add(-params.intervalInMinutes, 'minutes')
429
- // .toDate()
430
- // }
431
- // },
432
- // {
433
- // tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported
434
- // }
435
- // )
436
- // .exec();
429
+ });
430
+ }
431
+ /**
432
+ * タスクエクスポートの遅延している取引について明示的にemitTransactionStatusChangedを実行する
433
+ */
434
+ exportTasks(params) {
435
+ return __awaiter(this, void 0, void 0, function* () {
436
+ const delayedTransactions = yield this.transactionModel.find({
437
+ status: {
438
+ $in: [
439
+ factory.transactionStatusType.Canceled,
440
+ factory.transactionStatusType.Confirmed,
441
+ factory.transactionStatusType.Expired
442
+ ]
443
+ },
444
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Unexported },
445
+ endDate: {
446
+ $exists: true,
447
+ $lt: moment(params.now)
448
+ .add(-params.delayInSeconds, 'seconds')
449
+ .toDate()
450
+ }
451
+ })
452
+ .select({
453
+ _id: 1,
454
+ typeOf: 1,
455
+ status: 1
456
+ })
457
+ .setOptions({ maxTimeMS: 10000 })
458
+ .exec();
459
+ if (delayedTransactions.length > 0) {
460
+ delayedTransactions.forEach((delayedTransaction) => {
461
+ assetTransaction_2.assetTransactionEventEmitter.emitAssetTransactionStatusChanged({
462
+ id: delayedTransaction.id,
463
+ typeOf: delayedTransaction.typeOf,
464
+ status: delayedTransaction.status
465
+ });
466
+ });
467
+ }
468
+ return delayedTransactions;
437
469
  });
438
470
  }
439
471
  /**
@@ -449,6 +481,7 @@ class MongoRepository {
449
481
  }, {
450
482
  tasksExportationStatus: factory.transactionTasksExportationStatus.Exported,
451
483
  tasksExportedAt: endDate,
484
+ 'tasksExportAction.actionStatus': factory.actionStatusType.CompletedActionStatus,
452
485
  'tasksExportAction.endDate': endDate
453
486
  })
454
487
  .exec();
@@ -127,6 +127,13 @@ export declare class MongoRepository {
127
127
  reexportTasks(params: {
128
128
  intervalInMinutes: number;
129
129
  }): Promise<void>;
130
+ /**
131
+ * タスクエクスポートの遅延している取引について明示的にemitTransactionStatusChangedを実行する
132
+ */
133
+ exportTasks(params: {
134
+ now: Date;
135
+ delayInSeconds: number;
136
+ }): Promise<Pick<import("@chevre/factory/lib/transaction/moneyTransfer").ITransaction | import("@chevre/factory/lib/transaction/placeOrder").ITransaction | import("@chevre/factory/lib/transaction/returnOrder").ITransaction, "typeOf" | "id" | "status">[]>;
130
137
  /**
131
138
  * set task status exported by transaction id
132
139
  * IDでタスクをエクスポート済に変更する
@@ -264,7 +264,9 @@ class MongoRepository {
264
264
  else {
265
265
  expires = params.expires;
266
266
  }
267
- return this.transactionModel.create(Object.assign(Object.assign({}, params), { typeOf: params.typeOf, status: factory.transactionStatusType.InProgress, startDate, endDate: undefined, expires, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }))
267
+ return this.transactionModel.create(Object.assign(Object.assign({}, params), { typeOf: params.typeOf, status: factory.transactionStatusType.InProgress, startDate, endDate: undefined, expires, tasksExportAction: {
268
+ actionStatus: factory.actionStatusType.PotentialActionStatus
269
+ }, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }))
268
270
  .then((doc) => doc.toObject());
269
271
  });
270
272
  }
@@ -478,10 +480,9 @@ class MongoRepository {
478
480
  }
479
481
  const typeOfIn = (_a = params.typeOf) === null || _a === void 0 ? void 0 : _a.$in;
480
482
  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), {
481
- tasksExportAction: {
482
- agent: { name: params.tasksExportAction.agent.name },
483
- startDate: new Date()
484
- },
483
+ 'tasksExportAction.actionStatus': factory.actionStatusType.ActiveActionStatus,
484
+ 'tasksExportAction.agent': { name: params.tasksExportAction.agent.name },
485
+ 'tasksExportAction.startDate': new Date(),
485
486
  tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting
486
487
  }, { new: true })
487
488
  .select({
@@ -521,6 +522,9 @@ class MongoRepository {
521
522
  _id: { $eq: reexportingTransaction.id },
522
523
  tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting }
523
524
  }, {
525
+ tasksExportAction: {
526
+ actionStatus: factory.actionStatusType.PotentialActionStatus
527
+ },
524
528
  tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported
525
529
  })
526
530
  .exec();
@@ -531,20 +535,46 @@ class MongoRepository {
531
535
  });
532
536
  }
533
537
  }
534
- // await this.transactionModel.updateMany(
535
- // {
536
- // tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting },
537
- // updatedAt: {
538
- // $lt: moment()
539
- // .add(-params.intervalInMinutes, 'minutes')
540
- // .toDate()
541
- // }
542
- // },
543
- // {
544
- // tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported
545
- // }
546
- // )
547
- // .exec();
538
+ });
539
+ }
540
+ /**
541
+ * タスクエクスポートの遅延している取引について明示的にemitTransactionStatusChangedを実行する
542
+ */
543
+ exportTasks(params) {
544
+ return __awaiter(this, void 0, void 0, function* () {
545
+ const delayedTransactions = yield this.transactionModel.find({
546
+ status: {
547
+ $in: [
548
+ factory.transactionStatusType.Canceled,
549
+ factory.transactionStatusType.Confirmed,
550
+ factory.transactionStatusType.Expired
551
+ ]
552
+ },
553
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Unexported },
554
+ endDate: {
555
+ $exists: true,
556
+ $lt: moment(params.now)
557
+ .add(-params.delayInSeconds, 'seconds')
558
+ .toDate()
559
+ }
560
+ })
561
+ .select({
562
+ _id: 1,
563
+ typeOf: 1,
564
+ status: 1
565
+ })
566
+ .setOptions({ maxTimeMS: 10000 })
567
+ .exec();
568
+ if (delayedTransactions.length > 0) {
569
+ delayedTransactions.forEach((delayedTransaction) => {
570
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
571
+ id: delayedTransaction.id,
572
+ typeOf: delayedTransaction.typeOf,
573
+ status: delayedTransaction.status
574
+ });
575
+ });
576
+ }
577
+ return delayedTransactions;
548
578
  });
549
579
  }
550
580
  /**
@@ -560,6 +590,7 @@ class MongoRepository {
560
590
  }, {
561
591
  tasksExportationStatus: factory.transactionTasksExportationStatus.Exported,
562
592
  tasksExportedAt: endDate,
593
+ 'tasksExportAction.actionStatus': factory.actionStatusType.CompletedActionStatus,
563
594
  'tasksExportAction.endDate': endDate
564
595
  })
565
596
  .exec();
@@ -186,7 +186,7 @@ function createAggregateScreeningEventIfNotExist(params) {
186
186
  }
187
187
  }
188
188
  if (aggregateTasks.length > 0) {
189
- yield repos.task.saveMany(aggregateTasks);
189
+ yield repos.task.saveMany(aggregateTasks, { emitImmediately: true });
190
190
  }
191
191
  });
192
192
  }
@@ -46,7 +46,7 @@ function onPaid(payAction) {
46
46
  }));
47
47
  }
48
48
  // タスク保管
49
- return repos.task.saveMany(taskAttributes);
49
+ return repos.task.saveMany(taskAttributes, { emitImmediately: true });
50
50
  });
51
51
  }
52
52
  exports.onPaid = onPaid;
@@ -92,7 +92,7 @@ function onRefund(refundAction) {
92
92
  }));
93
93
  }
94
94
  // タスク保管
95
- return repos.task.saveMany(taskAttributes);
95
+ return repos.task.saveMany(taskAttributes, { emitImmediately: true });
96
96
  });
97
97
  }
98
98
  exports.onRefund = onRefund;
@@ -77,10 +77,6 @@ function onRegistered(actionAttributes, __) {
77
77
  }
78
78
  }
79
79
  // タスク保管
80
- // saveManyに変更(2023-02-01~)
81
- yield repos.task.saveMany(taskAttributes);
82
- // await Promise.all(taskAttributes.map(async (taskAttribute) => {
83
- // return repos.task.save(taskAttribute);
84
- // }));
80
+ yield repos.task.saveMany(taskAttributes, { emitImmediately: true });
85
81
  });
86
82
  }
@@ -144,7 +144,6 @@ function cancelPendingReservation(actionAttributesList) {
144
144
  // canceledReservationId: canceledReservation?.id
145
145
  );
146
146
  yield repos.action.complete({ typeOf: action.typeOf, id: action.id, result: actionResult });
147
- // await onReservationCanceledByAction(actionAttributes)({ task: repos.task });
148
147
  if (actionObject.typeOf === factory.reservationType.ReservationPackage) {
149
148
  // 最新のconfirmedReservationsを検索
150
149
  canceledReservations = yield repos.reservation.search({
@@ -297,7 +296,6 @@ function cancelReservation(actionAttributesList) {
297
296
  // canceledReservationId: canceledReservation?.id
298
297
  );
299
298
  yield repos.action.complete({ typeOf: action.typeOf, id: action.id, result: actionResult });
300
- // await onReservationCanceledByAction(actionAttributes)({ task: repos.task });
301
299
  let canceledReservations = [];
302
300
  if (actionAttributes.object.typeOf === factory.reservationType.ReservationPackage) {
303
301
  const reservationNumber = actionAttributes.object.reservationNumber;
@@ -4,9 +4,6 @@ type IEventReservation = factory.reservation.IReservation<factory.reservationTyp
4
4
  /**
5
5
  * 予約取消後のアクション
6
6
  */
7
- export declare function onReservationCanceledByAction(actionAttributes: factory.action.cancel.reservation.IAttributes): (repos: {
8
- task: TaskRepo;
9
- }) => Promise<void>;
10
7
  export declare function onReservationCanceled(canceledReservations: IEventReservation[], useInformReservation: boolean): (repos: {
11
8
  task: TaskRepo;
12
9
  }) => Promise<void>;
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.onReservationCanceled = exports.onReservationCanceledByAction = void 0;
12
+ exports.onReservationCanceled = void 0;
13
13
  /**
14
14
  * 予約取消時アクション
15
15
  */
@@ -23,22 +23,23 @@ const INFORM_TASK_DELAY_IN_SECONDS = 30;
23
23
  /**
24
24
  * 予約取消後のアクション
25
25
  */
26
- function onReservationCanceledByAction(actionAttributes) {
27
- return (repos) => __awaiter(this, void 0, void 0, function* () {
28
- const potentialActions = actionAttributes.potentialActions;
29
- const taskAttributes = [];
30
- // tslint:disable-next-line:no-single-line-block-comment
31
- /* istanbul ignore else */
32
- if (potentialActions !== undefined) {
33
- // no op
34
- }
35
- // タスク保管
36
- if (taskAttributes.length > 0) {
37
- yield repos.task.saveMany(taskAttributes);
38
- }
39
- });
40
- }
41
- exports.onReservationCanceledByAction = onReservationCanceledByAction;
26
+ // export function onReservationCanceledByAction(
27
+ // actionAttributes: factory.action.cancel.reservation.IAttributes
28
+ // ) {
29
+ // return async (repos: {
30
+ // task: TaskRepo;
31
+ // }) => {
32
+ // const potentialActions = actionAttributes.potentialActions;
33
+ // const taskAttributes: factory.task.IAttributes<factory.taskName>[] = [];
34
+ // if (potentialActions !== undefined) {
35
+ // // no op
36
+ // }
37
+ // // タスク保管
38
+ // if (taskAttributes.length > 0) {
39
+ // await repos.task.saveMany(taskAttributes, { emitImmediately: true });
40
+ // }
41
+ // };
42
+ // }
42
43
  function onReservationCanceled(canceledReservations, useInformReservation) {
43
44
  return (repos) => __awaiter(this, void 0, void 0, function* () {
44
45
  if (Array.isArray(canceledReservations) && canceledReservations.length > 0) {
@@ -57,38 +57,9 @@ function onReservationConfirmedByAction(actionAttributes
57
57
  }));
58
58
  }
59
59
  }
60
- // inform galobally
61
- // if (Array.isArray(informReservations)) {
62
- // const reservation4inform: IReservation4informConfirmed = maskUnderName(confirmedReservation);
63
- // taskAttributes.push(...informReservations.map<ITriggerWebhookTaskAttributes>((informReservation) => {
64
- // const informUrl: string = String(informReservation.recipient?.url);
65
- // const informReservationAttributes: InformReservationActionattributes = {
66
- // agent: confirmedReservation.project,
67
- // object: [reservation4inform],
68
- // project: confirmedReservation.project,
69
- // recipient: {
70
- // id: '',
71
- // name: informUrl,
72
- // typeOf: factory.creativeWorkType.WebApplication,
73
- // url: informUrl
74
- // },
75
- // typeOf: factory.actionType.InformAction
76
- // };
77
- // return {
78
- // project: actionAttributes.project,
79
- // name: factory.taskName.TriggerWebhook,
80
- // status: factory.taskStatus.Ready,
81
- // runsAt: now,
82
- // remainingNumberOfTries: NUM_TRY_INFORM_RESERVATION,
83
- // numberOfTried: 0,
84
- // executionResults: [],
85
- // data: informReservationAttributes
86
- // };
87
- // }));
88
- // }
89
60
  // タスク保管
90
61
  if (taskAttributes.length > 0) {
91
- yield repos.task.saveMany(taskAttributes);
62
+ yield repos.task.saveMany(taskAttributes, { emitImmediately: true });
92
63
  }
93
64
  });
94
65
  }
@@ -142,7 +113,7 @@ function onReservationConfirmed(confirmedReservations) {
142
113
  }
143
114
  // タスク保管
144
115
  if (taskAttributes.length > 0) {
145
- yield repos.task.saveMany(taskAttributes);
116
+ yield repos.task.saveMany(taskAttributes, { emitImmediately: true });
146
117
  }
147
118
  }
148
119
  });
@@ -95,7 +95,7 @@ function onRegistered(actionAttributes) {
95
95
  taskAttributes.push(...orderProgramMembershipTasks);
96
96
  }
97
97
  // タスク保管
98
- yield repos.task.saveMany(taskAttributes);
98
+ yield repos.task.saveMany(taskAttributes, { emitImmediately: true });
99
99
  });
100
100
  }
101
101
  exports.onRegistered = onRegistered;
@@ -219,10 +219,6 @@ function onRefund(refundActionAttributes) {
219
219
  });
220
220
  }
221
221
  // タスク保管
222
- // saveManyに変更(2023-02-01~)
223
- yield repos.task.saveMany(taskAttributes);
224
- // await Promise.all(taskAttributes.map(async (taskAttribute) => {
225
- // return repos.task.save(taskAttribute);
226
- // }));
222
+ yield repos.task.saveMany(taskAttributes, { emitImmediately: true });
227
223
  });
228
224
  }
package/package.json CHANGED
@@ -117,5 +117,5 @@
117
117
  "postversion": "git push origin --tags",
118
118
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
119
119
  },
120
- "version": "21.2.0-alpha.32"
120
+ "version": "21.2.0-alpha.34"
121
121
  }