@chevre/domain 21.2.0-alpha.18 → 21.2.0-alpha.19

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.
@@ -14,7 +14,7 @@ async function main() {
14
14
  };
15
15
 
16
16
  let now = moment();
17
- await transactionRepo.findByIdAndUpdate({
17
+ await transactionRepo.findByIdAndUpdateInProgress({
18
18
  id: transactionId,
19
19
  update
20
20
  });
@@ -64,9 +64,6 @@ export declare class MongoRepository {
64
64
  typeOf: T;
65
65
  transactionNumber: string;
66
66
  }): Promise<factory.assetTransaction.ITransaction<T>>;
67
- /**
68
- * 取引を確定する
69
- */
70
67
  addReservations(params: {
71
68
  typeOf: factory.assetTransactionType.Reserve;
72
69
  id: string;
@@ -80,7 +77,7 @@ export declare class MongoRepository {
80
77
  id: string;
81
78
  result: factory.assetTransaction.IResult<T>;
82
79
  potentialActions: factory.assetTransaction.IPotentialActions<T>;
83
- }): Promise<factory.assetTransaction.ITransaction<T>>;
80
+ }): Promise<void>;
84
81
  /**
85
82
  * 取引を開始&確定
86
83
  */
@@ -160,7 +157,7 @@ export declare class MongoRepository {
160
157
  /**
161
158
  * 特定の取引を更新する(汎用)
162
159
  */
163
- findByIdAndUpdate<T extends factory.assetTransactionType>(params: {
160
+ findByIdAndUpdateInProgress<T extends factory.assetTransactionType>(params: {
164
161
  id: string;
165
162
  update: any;
166
163
  }): Promise<factory.assetTransaction.ITransaction<T>>;
@@ -277,15 +277,12 @@ class MongoRepository {
277
277
  return doc.toObject();
278
278
  });
279
279
  }
280
- /**
281
- * 取引を確定する
282
- */
283
280
  addReservations(params) {
284
281
  return __awaiter(this, void 0, void 0, function* () {
285
282
  const doc = yield this.transactionModel.findOneAndUpdate({
286
- _id: params.id,
287
- typeOf: params.typeOf,
288
- status: factory.transactionStatusType.InProgress
283
+ _id: { $eq: params.id },
284
+ typeOf: { $eq: params.typeOf },
285
+ status: { $eq: factory.transactionStatusType.InProgress }
289
286
  }, {
290
287
  'object.acceptedOffer': params.object.acceptedOffer,
291
288
  // 念のため残す(2021/10/14)が、そのうち削除
@@ -310,22 +307,24 @@ class MongoRepository {
310
307
  confirm(params) {
311
308
  return __awaiter(this, void 0, void 0, function* () {
312
309
  const doc = yield this.transactionModel.findOneAndUpdate({
313
- _id: params.id,
314
- typeOf: params.typeOf,
315
- status: factory.transactionStatusType.InProgress
310
+ _id: { $eq: params.id },
311
+ typeOf: { $eq: params.typeOf },
312
+ status: { $eq: factory.transactionStatusType.InProgress }
316
313
  }, {
317
314
  status: factory.transactionStatusType.Confirmed,
318
315
  endDate: new Date(),
319
316
  result: params.result,
320
317
  potentialActions: params.potentialActions // resultを更新
321
- }, { new: true })
318
+ }, {
319
+ new: true,
320
+ projection: { _id: 1 }
321
+ })
322
322
  .exec();
323
323
  // NotFoundであれば取引状態確認
324
324
  if (doc === null) {
325
325
  const transaction = yield this.findById({ typeOf: params.typeOf, id: params.id });
326
326
  if (transaction.status === factory.transactionStatusType.Confirmed) {
327
- // すでに確定済の場合
328
- return transaction;
327
+ // すでに確定済の場合スルー
329
328
  }
330
329
  else if (transaction.status === factory.transactionStatusType.Expired) {
331
330
  throw new factory.errors.Argument('Transaction id', 'Transaction already expired');
@@ -337,7 +336,6 @@ class MongoRepository {
337
336
  throw new factory.errors.NotFound(this.transactionModel.modelName);
338
337
  }
339
338
  }
340
- return doc.toObject();
341
339
  });
342
340
  }
343
341
  /**
@@ -355,8 +353,14 @@ class MongoRepository {
355
353
  startExportTasks(params) {
356
354
  var _a, _b;
357
355
  return __awaiter(this, void 0, void 0, function* () {
356
+ switch (params.status) {
357
+ case factory.transactionStatusType.InProgress:
358
+ throw new factory.errors.NotImplemented(`status "${params.status}" not implemented on startExportTasks`);
359
+ default:
360
+ // no op
361
+ }
358
362
  const typeOfIn = (_a = params.typeOf) === null || _a === void 0 ? void 0 : _a.$in;
359
- 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: params.status, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }), (typeof params.id === 'string') ? { _id: { $eq: params.id } } : undefined), { tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting }, { new: true })
363
+ 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), { tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting }, { new: true })
360
364
  .select({
361
365
  _id: 1,
362
366
  typeOf: 1
@@ -374,7 +378,7 @@ class MongoRepository {
374
378
  reexportTasks(params) {
375
379
  return __awaiter(this, void 0, void 0, function* () {
376
380
  yield this.transactionModel.updateMany({
377
- tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting,
381
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting },
378
382
  updatedAt: {
379
383
  $lt: moment()
380
384
  .add(-params.intervalInMinutes, 'minutes')
@@ -392,10 +396,12 @@ class MongoRepository {
392
396
  */
393
397
  setTasksExportedById(params) {
394
398
  return __awaiter(this, void 0, void 0, function* () {
395
- yield this.transactionModel.updateOne({ _id: { $eq: params.id } }, {
399
+ yield this.transactionModel.updateOne({
400
+ _id: { $eq: params.id },
401
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting }
402
+ }, {
396
403
  tasksExportationStatus: factory.transactionTasksExportationStatus.Exported,
397
- tasksExportedAt: moment()
398
- .toDate()
404
+ tasksExportedAt: new Date()
399
405
  })
400
406
  .exec();
401
407
  });
@@ -435,19 +441,18 @@ class MongoRepository {
435
441
  */
436
442
  cancel(params) {
437
443
  return __awaiter(this, void 0, void 0, function* () {
438
- const endDate = moment()
439
- .toDate();
444
+ const endDate = new Date();
440
445
  // 進行中ステータスの取引を中止する
441
- const doc = yield this.transactionModel.findOneAndUpdate(Object.assign(Object.assign(Object.assign({ typeOf: params.typeOf }, (typeof params.id === 'string') ? { _id: params.id } : undefined), (typeof params.transactionNumber === 'string')
446
+ const doc = yield this.transactionModel.findOneAndUpdate(Object.assign(Object.assign(Object.assign({ typeOf: { $eq: params.typeOf } }, (typeof params.id === 'string') ? { _id: { $eq: params.id } } : undefined), (typeof params.transactionNumber === 'string')
442
447
  ? { transactionNumber: { $exists: true, $eq: params.transactionNumber } }
443
- : undefined), { status: factory.transactionStatusType.InProgress }), {
448
+ : undefined), { status: { $eq: factory.transactionStatusType.InProgress } }), {
444
449
  status: factory.transactionStatusType.Canceled,
445
450
  endDate: endDate
446
451
  }, { new: true })
447
452
  .exec();
453
+ let transaction;
448
454
  // NotFoundであれば取引状態確認
449
455
  if (doc === null) {
450
- let transaction;
451
456
  if (typeof params.id === 'string') {
452
457
  transaction = yield this.findById({ typeOf: params.typeOf, id: params.id });
453
458
  }
@@ -461,8 +466,7 @@ class MongoRepository {
461
466
  throw new factory.errors.ArgumentNull('Transaction ID or Transaction Number');
462
467
  }
463
468
  if (transaction.status === factory.transactionStatusType.Canceled) {
464
- // すでに中止済の場合
465
- return transaction;
469
+ // すでに中止済の場合スルー
466
470
  }
467
471
  else if (transaction.status === factory.transactionStatusType.Expired) {
468
472
  throw new factory.errors.Argument('Transaction id', 'Transaction already expired');
@@ -474,7 +478,10 @@ class MongoRepository {
474
478
  throw new factory.errors.NotFound(this.transactionModel.modelName);
475
479
  }
476
480
  }
477
- return doc.toObject();
481
+ else {
482
+ transaction = doc.toObject();
483
+ }
484
+ return transaction;
478
485
  });
479
486
  }
480
487
  count(params) {
@@ -536,9 +543,12 @@ class MongoRepository {
536
543
  /**
537
544
  * 特定の取引を更新する(汎用)
538
545
  */
539
- findByIdAndUpdate(params) {
546
+ findByIdAndUpdateInProgress(params) {
540
547
  return __awaiter(this, void 0, void 0, function* () {
541
- return this.transactionModel.findOneAndUpdate({ _id: params.id }, params.update, { new: true })
548
+ return this.transactionModel.findOneAndUpdate({
549
+ _id: { $eq: params.id },
550
+ status: { $eq: factory.transactionStatusType.InProgress }
551
+ }, params.update, { new: true })
542
552
  .exec()
543
553
  .then((doc) => {
544
554
  if (doc === null) {
@@ -33,7 +33,7 @@ const schema = new mongoose_1.Schema({
33
33
  }, {
34
34
  collection: 'accountTransactions',
35
35
  id: true,
36
- read: 'primaryPreferred',
36
+ read: 'primary',
37
37
  writeConcern: writeConcern_1.writeConcern,
38
38
  strict: true,
39
39
  strictQuery: false,
@@ -31,7 +31,7 @@ const schema = new mongoose_1.Schema({
31
31
  }, {
32
32
  collection: 'actions',
33
33
  id: true,
34
- read: 'primaryPreferred',
34
+ read: 'primary',
35
35
  writeConcern: writeConcern_1.writeConcern,
36
36
  // true化(2022-11-12~)
37
37
  strict: true,
@@ -30,7 +30,7 @@ const schema = new mongoose_1.Schema({
30
30
  }, {
31
31
  collection: 'assetTransactions',
32
32
  id: true,
33
- read: 'primaryPreferred',
33
+ read: 'primary',
34
34
  writeConcern: writeConcern_1.writeConcern,
35
35
  strict: true,
36
36
  strictQuery: false,
@@ -18,7 +18,7 @@ const schema = new mongoose_1.Schema({
18
18
  }, {
19
19
  collection: 'authorizations',
20
20
  id: true,
21
- read: 'primaryPreferred',
21
+ read: 'primary',
22
22
  writeConcern: writeConcern_1.writeConcern,
23
23
  strict: true,
24
24
  strictQuery: false,
@@ -29,7 +29,7 @@ const schema = new mongoose_1.Schema({
29
29
  }, {
30
30
  collection: 'comments',
31
31
  id: true,
32
- read: 'primaryPreferred',
32
+ read: 'primary',
33
33
  writeConcern: writeConcern_1.writeConcern,
34
34
  strict: true,
35
35
  strictQuery: false,
@@ -37,7 +37,7 @@ const schema = new mongoose_1.Schema({
37
37
  }, {
38
38
  collection: 'orders',
39
39
  id: true,
40
- read: 'primaryPreferred',
40
+ read: 'primary',
41
41
  writeConcern: writeConcern_1.writeConcern,
42
42
  strict: true,
43
43
  strictQuery: false,
@@ -24,7 +24,7 @@ const schema = new mongoose_1.Schema({
24
24
  }, {
25
25
  collection: 'ownershipInfos',
26
26
  id: true,
27
- read: 'primaryPreferred',
27
+ read: 'primary',
28
28
  writeConcern: writeConcern_1.writeConcern,
29
29
  strict: true,
30
30
  strictQuery: false,
@@ -48,7 +48,7 @@ const schema = new mongoose_1.Schema({
48
48
  }, {
49
49
  collection: 'reservations',
50
50
  id: true,
51
- read: 'primaryPreferred',
51
+ read: 'primary',
52
52
  writeConcern: writeConcern_1.writeConcern,
53
53
  strict: true,
54
54
  strictQuery: false,
@@ -17,7 +17,7 @@ const schema = new mongoose_1.Schema({
17
17
  }, {
18
18
  collection: 'serviceOutputs',
19
19
  id: true,
20
- read: 'primaryPreferred',
20
+ read: 'primary',
21
21
  writeConcern: writeConcern_1.writeConcern,
22
22
  strict: false,
23
23
  strictQuery: false,
@@ -22,7 +22,7 @@ const schema = new mongoose_1.Schema({
22
22
  }, {
23
23
  collection: 'tasks',
24
24
  id: true,
25
- read: 'primaryPreferred',
25
+ read: 'primary',
26
26
  writeConcern: writeConcern_1.writeConcern,
27
27
  strict: true,
28
28
  strictQuery: false,
@@ -28,7 +28,7 @@ const schema = new mongoose_1.Schema({
28
28
  }, {
29
29
  collection: 'transactions',
30
30
  id: true,
31
- read: 'primaryPreferred',
31
+ read: 'primary',
32
32
  writeConcern: writeConcern_1.writeConcern,
33
33
  strict: true,
34
34
  strictQuery: false,
@@ -151,7 +151,7 @@ export declare class MongoRepository {
151
151
  /**
152
152
  * 特定の取引を更新する(汎用)
153
153
  */
154
- findByIdAndUpdate(params: {
154
+ findByIdAndUpdateInProgress(params: {
155
155
  id: string;
156
156
  update: {
157
157
  $set?: any;
@@ -344,9 +344,9 @@ class MongoRepository {
344
344
  var _a, _b;
345
345
  return __awaiter(this, void 0, void 0, function* () {
346
346
  const doc = yield this.transactionModel.findOneAndUpdate({
347
- _id: params.id,
348
- typeOf: params.typeOf,
349
- status: factory.transactionStatusType.InProgress
347
+ _id: { $eq: params.id },
348
+ typeOf: { $eq: params.typeOf },
349
+ status: { $eq: factory.transactionStatusType.InProgress }
350
350
  }, {
351
351
  $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)
352
352
  }, {
@@ -364,9 +364,9 @@ class MongoRepository {
364
364
  updateExpires(params) {
365
365
  return __awaiter(this, void 0, void 0, function* () {
366
366
  const doc = yield this.transactionModel.findOneAndUpdate({
367
- _id: params.id,
368
- typeOf: params.typeOf,
369
- status: factory.transactionStatusType.InProgress
367
+ _id: { $eq: params.id },
368
+ typeOf: { $eq: params.typeOf },
369
+ status: { $eq: factory.transactionStatusType.InProgress }
370
370
  }, {
371
371
  $set: {
372
372
  expires: params.expires
@@ -388,9 +388,9 @@ class MongoRepository {
388
388
  var _a;
389
389
  return __awaiter(this, void 0, void 0, function* () {
390
390
  const doc = yield this.transactionModel.findOneAndUpdate({
391
- _id: params.id,
392
- typeOf: params.typeOf,
393
- status: factory.transactionStatusType.InProgress
391
+ _id: { $eq: params.id },
392
+ typeOf: { $eq: params.typeOf },
393
+ status: { $eq: factory.transactionStatusType.InProgress }
394
394
  }, {
395
395
  $set: Object.assign({}, (typeof ((_a = params.object) === null || _a === void 0 ? void 0 : _a.name) === 'string') ? { 'object.name': params.object.name } : undefined)
396
396
  }, {
@@ -408,9 +408,9 @@ class MongoRepository {
408
408
  confirm(params) {
409
409
  return __awaiter(this, void 0, void 0, function* () {
410
410
  const doc = yield this.transactionModel.findOneAndUpdate({
411
- _id: params.id,
412
- typeOf: params.typeOf,
413
- status: factory.transactionStatusType.InProgress
411
+ _id: { $eq: params.id },
412
+ typeOf: { $eq: params.typeOf },
413
+ status: { $eq: factory.transactionStatusType.InProgress }
414
414
  }, {
415
415
  status: factory.transactionStatusType.Confirmed,
416
416
  endDate: new Date(),
@@ -425,23 +425,14 @@ class MongoRepository {
425
425
  // NotFoundであれば取引状態確認
426
426
  if (doc === null) {
427
427
  const transaction = yield this.findById({ typeOf: params.typeOf, id: params.id });
428
- // tslint:disable-next-line:no-single-line-block-comment
429
- /* istanbul ignore next */
430
428
  if (transaction.status === factory.transactionStatusType.Confirmed) {
431
- // すでに確定済の場合
432
- return;
433
- // tslint:disable-next-line:no-single-line-block-comment
434
- /* istanbul ignore next */
429
+ // すでに確定済の場合スルー
435
430
  }
436
431
  else if (transaction.status === factory.transactionStatusType.Expired) {
437
432
  throw new factory.errors.Argument('Transaction id', 'Already expired');
438
- // tslint:disable-next-line:no-single-line-block-comment
439
- /* istanbul ignore next */
440
433
  }
441
434
  else if (transaction.status === factory.transactionStatusType.Canceled) {
442
435
  throw new factory.errors.Argument('Transaction id', 'Already canceled');
443
- // tslint:disable-next-line:no-single-line-block-comment
444
- /* istanbul ignore next */
445
436
  }
446
437
  else {
447
438
  throw new factory.errors.NotFound(this.transactionModel.modelName);
@@ -460,8 +451,14 @@ class MongoRepository {
460
451
  startExportTasks(params) {
461
452
  var _a;
462
453
  return __awaiter(this, void 0, void 0, function* () {
454
+ switch (params.status) {
455
+ case factory.transactionStatusType.InProgress:
456
+ throw new factory.errors.NotImplemented(`status "${params.status}" not implemented on startExportTasks`);
457
+ default:
458
+ // no op
459
+ }
463
460
  const typeOfIn = (_a = params.typeOf) === null || _a === void 0 ? void 0 : _a.$in;
464
- 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: params.status, tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported }), (typeof params.id === 'string') ? { _id: { $eq: params.id } } : undefined), { tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting }, { new: true })
461
+ 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), { tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting }, { new: true })
465
462
  .select({
466
463
  _id: 1,
467
464
  typeOf: 1
@@ -478,17 +475,51 @@ class MongoRepository {
478
475
  */
479
476
  reexportTasks(params) {
480
477
  return __awaiter(this, void 0, void 0, function* () {
481
- yield this.transactionModel.updateMany({
482
- tasksExportationStatus: factory.transactionTasksExportationStatus.Exporting,
478
+ const reexportingTransactions = yield this.transactionModel.find({
479
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting },
483
480
  updatedAt: {
484
481
  $lt: moment()
485
482
  .add(-params.intervalInMinutes, 'minutes')
486
483
  .toDate()
487
484
  }
488
- }, {
489
- tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported
490
485
  })
486
+ .select({
487
+ _id: 1,
488
+ typeOf: 1,
489
+ status: 1
490
+ })
491
+ .setOptions({ maxTimeMS: 10000 })
491
492
  .exec();
493
+ if (reexportingTransactions.length > 0) {
494
+ for (const reexportingTransaction of reexportingTransactions) {
495
+ yield this.transactionModel.updateOne({
496
+ _id: { $eq: reexportingTransaction.id },
497
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting }
498
+ }, {
499
+ tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported
500
+ })
501
+ .exec();
502
+ transaction_2.transactionEventEmitter.emitTransactionStatusChanged({
503
+ id: reexportingTransaction.id,
504
+ typeOf: reexportingTransaction.typeOf,
505
+ status: reexportingTransaction.status
506
+ });
507
+ }
508
+ }
509
+ // await this.transactionModel.updateMany(
510
+ // {
511
+ // tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting },
512
+ // updatedAt: {
513
+ // $lt: moment()
514
+ // .add(-params.intervalInMinutes, 'minutes')
515
+ // .toDate()
516
+ // }
517
+ // },
518
+ // {
519
+ // tasksExportationStatus: factory.transactionTasksExportationStatus.Unexported
520
+ // }
521
+ // )
522
+ // .exec();
492
523
  });
493
524
  }
494
525
  /**
@@ -497,7 +528,10 @@ class MongoRepository {
497
528
  */
498
529
  setTasksExportedById(params) {
499
530
  return __awaiter(this, void 0, void 0, function* () {
500
- yield this.transactionModel.updateOne({ _id: { $eq: params.id } }, {
531
+ yield this.transactionModel.updateOne({
532
+ _id: { $eq: params.id },
533
+ tasksExportationStatus: { $eq: factory.transactionTasksExportationStatus.Exporting }
534
+ }, {
501
535
  tasksExportationStatus: factory.transactionTasksExportationStatus.Exported,
502
536
  tasksExportedAt: new Date()
503
537
  })
@@ -563,11 +597,8 @@ class MongoRepository {
563
597
  // NotFoundであれば取引状態確認
564
598
  if (doc === null) {
565
599
  const transaction = yield this.findById(params);
566
- // tslint:disable-next-line:no-single-line-block-comment
567
- /* istanbul ignore next */
568
600
  if (transaction.status === factory.transactionStatusType.Canceled) {
569
- // すでに中止済の場合
570
- return;
601
+ // すでに中止済の場合スルー
571
602
  }
572
603
  else if (transaction.status === factory.transactionStatusType.Expired) {
573
604
  throw new factory.errors.Argument('Transaction id', 'Transaction already expired');
@@ -641,9 +672,12 @@ class MongoRepository {
641
672
  /**
642
673
  * 特定の取引を更新する(汎用)
643
674
  */
644
- findByIdAndUpdate(params) {
675
+ findByIdAndUpdateInProgress(params) {
645
676
  return __awaiter(this, void 0, void 0, function* () {
646
- yield this.transactionModel.findOneAndUpdate({ _id: params.id }, params.update, {
677
+ yield this.transactionModel.findOneAndUpdate({
678
+ _id: { $eq: params.id },
679
+ status: { $eq: factory.transactionStatusType.InProgress }
680
+ }, params.update, {
647
681
  // new: true,
648
682
  projection: { _id: 1 }
649
683
  })
@@ -658,7 +692,8 @@ class MongoRepository {
658
692
  saveOrderNumberIfNotExist(params) {
659
693
  return __awaiter(this, void 0, void 0, function* () {
660
694
  yield this.transactionModel.updateOne({
661
- _id: params.id,
695
+ _id: { $eq: params.id },
696
+ status: { $eq: factory.transactionStatusType.InProgress },
662
697
  'object.orderNumber': { $exists: false }
663
698
  }, { 'object.orderNumber': params.orderNumber })
664
699
  .exec();
@@ -667,7 +702,8 @@ class MongoRepository {
667
702
  saveConfirmationNumberIfNotExist(params) {
668
703
  return __awaiter(this, void 0, void 0, function* () {
669
704
  yield this.transactionModel.updateOne({
670
- _id: params.id,
705
+ _id: { $eq: params.id },
706
+ status: { $eq: factory.transactionStatusType.InProgress },
671
707
  'object.confirmationNumber': { $exists: false }
672
708
  }, { 'object.confirmationNumber': params.confirmationNumber })
673
709
  .exec();
@@ -281,7 +281,7 @@ function processAuthorizeMovieTicket(params, transaction, paymentServiceId, useC
281
281
  }
282
282
  function saveAuthorizeResult(params) {
283
283
  return (repos) => __awaiter(this, void 0, void 0, function* () {
284
- return repos.assetTransaction.findByIdAndUpdate(params);
284
+ return repos.assetTransaction.findByIdAndUpdateInProgress(params);
285
285
  });
286
286
  }
287
287
  /**
@@ -194,7 +194,7 @@ function publishPaymentUrl(params) {
194
194
  paymentUrl: result.paymentUrl,
195
195
  issuedThrough: { id: (typeof startParams.object.id === 'string') ? startParams.object.id : '' }
196
196
  };
197
- yield repos.transaction.findByIdAndUpdate({
197
+ yield repos.transaction.findByIdAndUpdateInProgress({
198
198
  id: transaction.id,
199
199
  update: { $set: { 'object.paymentMethods': paymentMethodByPaymentUrl } }
200
200
  });
@@ -311,7 +311,7 @@ function authorizeAward(params) {
311
311
  if (Array.isArray(givePointAwardParams)) {
312
312
  const pointAwardIdentifiers = givePointAwardParams.map((g) => { var _a; return String((_a = g.object) === null || _a === void 0 ? void 0 : _a.identifier); });
313
313
  // 取引にインセンティブ付与アクションパラメータを保管する
314
- yield repos.transaction.findByIdAndUpdate({
314
+ yield repos.transaction.findByIdAndUpdateInProgress({
315
315
  id: transaction.id,
316
316
  update: {
317
317
  $set: {
@@ -339,7 +339,7 @@ function voidAward(params) {
339
339
  if (transaction.agent.id !== params.agent.id) {
340
340
  throw new factory.errors.Forbidden('Transaction not yours');
341
341
  }
342
- yield repos.transaction.findByIdAndUpdate({
342
+ yield repos.transaction.findByIdAndUpdateInProgress({
343
343
  id: transaction.id,
344
344
  update: {
345
345
  $unset: {
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.18"
120
+ "version": "21.2.0-alpha.19"
121
121
  }
@@ -1,96 +0,0 @@
1
- // tslint:disable:no-console
2
- import * as moment from 'moment';
3
- import * as mongoose from 'mongoose';
4
-
5
- import { chevre } from '../../../lib/index';
6
-
7
- const project = { id: String(process.env.PROJECT_ID) };
8
-
9
- // tslint:disable-next-line:max-func-body-length
10
- async function main() {
11
- await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
12
-
13
- const accountTransactionRepo = new chevre.repository.AccountTransaction(mongoose.connection);
14
- const assetTransactionRepo = new chevre.repository.AssetTransaction(mongoose.connection);
15
-
16
- const cursor = assetTransactionRepo.getCursor(
17
- {
18
- 'project.id': { $eq: project.id },
19
- typeOf: { $eq: chevre.factory.assetTransactionType.MoneyTransfer },
20
- startDate: {
21
- $gte: moment('2023-02-17T15:00:00Z')
22
- .toDate()
23
- }
24
- // _id: { $eq: 'al6aff83w' }
25
- },
26
- {
27
- // _id: 1,
28
- }
29
- );
30
- console.log('assetTransactions found');
31
-
32
- let i = 0;
33
- let updateCount = 0;
34
- // tslint:disable-next-line:max-func-body-length
35
- await cursor.eachAsync(async (doc) => {
36
- i += 1;
37
- const moneyTransferTransaction: chevre.factory.assetTransaction.moneyTransfer.ITransaction = doc.toObject();
38
-
39
- const description = moneyTransferTransaction.object.description;
40
- if (description !== '鑑賞' && description !== '受け取り') {
41
- console.log(
42
- 'no operation needed',
43
- description,
44
- moneyTransferTransaction.project.id,
45
- moneyTransferTransaction.transactionNumber,
46
- moneyTransferTransaction.startDate
47
- );
48
- } else {
49
- const pendingTransactionIdentifier = moneyTransferTransaction.object.pendingTransaction?.identifier;
50
- if (typeof pendingTransactionIdentifier === 'string' && pendingTransactionIdentifier.length > 0) {
51
- console.log(
52
- 'pendingTransactionIdentifier found',
53
- description,
54
- moneyTransferTransaction.project.id,
55
- moneyTransferTransaction.transactionNumber,
56
- moneyTransferTransaction.startDate
57
- );
58
- } else {
59
- // 口座取引からidentifierを取得
60
- const accountTransaction =
61
- await accountTransactionRepo.findByTransactionNumber({ transactionNumber: moneyTransferTransaction.transactionNumber });
62
- console.log(
63
- 'updating identifier...',
64
- accountTransaction.identifier,
65
- description,
66
- moneyTransferTransaction.project.id,
67
- moneyTransferTransaction.transactionNumber,
68
- moneyTransferTransaction.startDate
69
- );
70
- if (typeof accountTransaction.identifier === 'string') {
71
- await assetTransactionRepo.findByIdAndUpdate({
72
- id: moneyTransferTransaction.id,
73
- update: {
74
- 'object.pendingTransaction.identifier': accountTransaction.identifier
75
- }
76
- });
77
- }
78
- console.log(
79
- 'ientifier updated',
80
- accountTransaction.identifier,
81
- description,
82
- moneyTransferTransaction.project.id,
83
- moneyTransferTransaction.transactionNumber,
84
- moneyTransferTransaction.startDate
85
- );
86
- updateCount += 1;
87
- }
88
- }
89
- });
90
- console.log(i, 'assetTransactions checked');
91
- console.log(updateCount, 'assetTransactions updated');
92
- }
93
-
94
- main()
95
- .then()
96
- .catch(console.error);