@chevre/domain 26.0.0-alpha.6 → 26.0.0-alpha.8

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.
@@ -1,12 +1,11 @@
1
1
  import type { Connection, UpdateWriteOpResult } from 'mongoose';
2
2
  import { INextFunction } from '../eventEmitter/task';
3
3
  import { factory } from '../factory';
4
- import { IModel } from './mongoose/schemas/task';
5
4
  /**
6
5
  * 旧非同期アクション(tasksコレクションにて管理)リポジトリ
7
6
  */
8
7
  export declare class AsyncActionLegacyRepo {
9
- readonly taskModel: IModel;
8
+ private readonly taskModel;
10
9
  constructor(connection: Connection);
11
10
  runImmediately(params: Pick<factory.task.IAttributes<factory.taskName>, 'data' | 'name' | 'project' | 'remainingNumberOfTries' | 'runsAt'> & {
12
11
  alternateName?: never;
@@ -0,0 +1,19 @@
1
+ import type { Connection, UpdateWriteOpResult } from 'mongoose';
2
+ import { factory } from '../factory';
3
+ import { IModel } from './mongoose/schemas/task';
4
+ /**
5
+ * 旧予定タスクリポジトリ
6
+ */
7
+ export declare class ScheduledTaskLegacyRepo {
8
+ readonly taskModel: IModel;
9
+ constructor(connection: Connection);
10
+ /**
11
+ * $eq:0をAbortedにする(特定のタスクのみ)(これらは中止されてもhubへ通知しない)
12
+ */
13
+ abortLegacyTasks(params: {
14
+ intervalInMinutes: number;
15
+ name: {
16
+ $in: factory.taskName[];
17
+ };
18
+ }): Promise<UpdateWriteOpResult>;
19
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ScheduledTaskLegacyRepo = void 0;
7
+ const moment_1 = __importDefault(require("moment"));
8
+ const factory_1 = require("../factory");
9
+ const task_1 = require("./mongoose/schemas/task");
10
+ /**
11
+ * 旧予定タスクリポジトリ
12
+ */
13
+ class ScheduledTaskLegacyRepo {
14
+ taskModel;
15
+ constructor(connection) {
16
+ this.taskModel = connection.model(task_1.modelName, (0, task_1.createSchema)());
17
+ }
18
+ /**
19
+ * $eq:0をAbortedにする(特定のタスクのみ)(これらは中止されてもhubへ通知しない)
20
+ */
21
+ async abortLegacyTasks(params) {
22
+ const lastTriedAtShoudBeLessThan = (0, moment_1.default)()
23
+ .add(-params.intervalInMinutes, 'minutes')
24
+ .toDate();
25
+ return this.taskModel.updateMany({
26
+ status: { $eq: factory_1.factory.taskStatus.Running },
27
+ lastTriedAt: {
28
+ $type: 'date',
29
+ $lt: lastTriedAtShoudBeLessThan
30
+ },
31
+ remainingNumberOfTries: { $eq: 0 },
32
+ name: { $in: params.name.$in }
33
+ }, {
34
+ $set: {
35
+ status: factory_1.factory.taskStatus.Aborted,
36
+ dateAborted: new Date()
37
+ }
38
+ })
39
+ .exec();
40
+ }
41
+ }
42
+ exports.ScheduledTaskLegacyRepo = ScheduledTaskLegacyRepo;
@@ -117,16 +117,14 @@ export declare class TaskRepo {
117
117
  /**
118
118
  * Runningのまま一定期間超過し、かつ、remainingNumberOfTries>0のタスクをReadyに変更する
119
119
  */
120
- retryMany(params: {
120
+ retryTasks(params: {
121
+ intervalInMinutes: number;
122
+ }): Promise<UpdateWriteOpResult>;
123
+ /**
124
+ * $lte:0をReadyにする(特定のタスクを除いて) -> Readyにすれば自動的にAbortedになる
125
+ */
126
+ retryAbortingTasksByName(params: {
121
127
  intervalInMinutes: number;
122
- /**
123
- * リトライ条件に残り試行回数条件を追加する
124
- * 十分に小さい数値を指定すれば、実質残り試行回数に関係なくRunningがReadyに変更されることになる
125
- */
126
- remainingNumberOfTries: {
127
- $gte?: number;
128
- $lte?: number;
129
- };
130
128
  name: {
131
129
  $in?: factory.taskName[];
132
130
  };
@@ -139,12 +137,6 @@ export declare class TaskRepo {
139
137
  id: string;
140
138
  remainingNumberOfTries: number;
141
139
  }): Promise<UpdateWriteOpResult>;
142
- abortMany(params: {
143
- intervalInMinutes: number;
144
- name: {
145
- $in?: factory.taskName[];
146
- };
147
- }): Promise<UpdateWriteOpResult>;
148
140
  /**
149
141
  * タスクIDから実行結果とステータスを保管する
150
142
  * Abortedの場合、dateAbortedもセットする
@@ -407,12 +407,12 @@ class TaskRepo {
407
407
  /**
408
408
  * Runningのまま一定期間超過し、かつ、remainingNumberOfTries>0のタスクをReadyに変更する
409
409
  */
410
- async retryMany(params) {
410
+ async retryTasks(params) {
411
411
  const lastTriedAtShoudBeLessThan = (0, moment_1.default)()
412
412
  .add(-params.intervalInMinutes, 'minutes')
413
413
  .toDate();
414
- const remainingNumberOfTriesGte = params.remainingNumberOfTries.$gte;
415
- const remainingNumberOfTriesLte = params.remainingNumberOfTries.$lte;
414
+ // const remainingNumberOfTriesGte = params.remainingNumberOfTries.$gte;
415
+ // const remainingNumberOfTriesLte = params.remainingNumberOfTries.$lte;
416
416
  return this.taskModel.updateMany(
417
417
  // name: 'retry'のindexと連動しているので、条件の順序などには注意すること
418
418
  // @see schemas/task
@@ -422,12 +422,46 @@ class TaskRepo {
422
422
  $type: 'date',
423
423
  $lt: lastTriedAtShoudBeLessThan
424
424
  },
425
- ...(typeof remainingNumberOfTriesGte === 'number')
426
- ? { remainingNumberOfTries: { $gte: remainingNumberOfTriesGte } }
427
- : undefined,
428
- ...(typeof remainingNumberOfTriesLte === 'number')
429
- ? { remainingNumberOfTries: { $lte: remainingNumberOfTriesLte } }
430
- : undefined,
425
+ remainingNumberOfTries: { $gte: 1 },
426
+ // ...(typeof remainingNumberOfTriesGte === 'number')
427
+ // ? { remainingNumberOfTries: { $gte: remainingNumberOfTriesGte } }
428
+ // : undefined,
429
+ // ...(typeof remainingNumberOfTriesLte === 'number')
430
+ // ? { remainingNumberOfTries: { $lte: remainingNumberOfTriesLte } }
431
+ // : undefined,
432
+ // ...(Array.isArray(params.name.$in)) ? { name: { $in: params.name.$in } } : undefined
433
+ }, {
434
+ $set: {
435
+ status: factory_1.factory.taskStatus.Ready // 実行前に変更
436
+ }
437
+ })
438
+ .exec();
439
+ }
440
+ /**
441
+ * $lte:0をReadyにする(特定のタスクを除いて) -> Readyにすれば自動的にAbortedになる
442
+ */
443
+ async retryAbortingTasksByName(params) {
444
+ const lastTriedAtShoudBeLessThan = (0, moment_1.default)()
445
+ .add(-params.intervalInMinutes, 'minutes')
446
+ .toDate();
447
+ // const remainingNumberOfTriesGte = params.remainingNumberOfTries.$gte;
448
+ // const remainingNumberOfTriesLte = params.remainingNumberOfTries.$lte;
449
+ return this.taskModel.updateMany(
450
+ // name: 'retry'のindexと連動しているので、条件の順序などには注意すること
451
+ // @see schemas/task
452
+ {
453
+ status: { $eq: factory_1.factory.taskStatus.Running },
454
+ lastTriedAt: {
455
+ $type: 'date',
456
+ $lt: lastTriedAtShoudBeLessThan
457
+ },
458
+ remainingNumberOfTries: { $lte: 0 },
459
+ // ...(typeof remainingNumberOfTriesGte === 'number')
460
+ // ? { remainingNumberOfTries: { $gte: remainingNumberOfTriesGte } }
461
+ // : undefined,
462
+ // ...(typeof remainingNumberOfTriesLte === 'number')
463
+ // ? { remainingNumberOfTries: { $lte: remainingNumberOfTriesLte } }
464
+ // : undefined,
431
465
  ...(Array.isArray(params.name.$in)) ? { name: { $in: params.name.$in } } : undefined
432
466
  }, {
433
467
  $set: {
@@ -454,26 +488,6 @@ class TaskRepo {
454
488
  })
455
489
  .exec();
456
490
  }
457
- async abortMany(params) {
458
- const lastTriedAtShoudBeLessThan = (0, moment_1.default)()
459
- .add(-params.intervalInMinutes, 'minutes')
460
- .toDate();
461
- return this.taskModel.updateMany({
462
- status: { $eq: factory_1.factory.taskStatus.Running },
463
- lastTriedAt: {
464
- $type: 'date',
465
- $lt: lastTriedAtShoudBeLessThan
466
- },
467
- remainingNumberOfTries: { $eq: 0 },
468
- ...(Array.isArray(params.name.$in)) ? { name: { $in: params.name.$in } } : undefined
469
- }, {
470
- $set: {
471
- status: factory_1.factory.taskStatus.Aborted,
472
- dateAborted: new Date()
473
- }
474
- })
475
- .exec();
476
- }
477
491
  /**
478
492
  * タスクIDから実行結果とステータスを保管する
479
493
  * Abortedの場合、dateAbortedもセットする
@@ -93,6 +93,7 @@ import type { RateLimitSettingRepo } from './repo/setting/rateLimit';
93
93
  import type { WaiterSettingRepo } from './repo/setting/waiter';
94
94
  import type { StockHolderRepo } from './repo/stockHolder';
95
95
  import type { ScheduledTaskRepo } from './repo/scheduledTask';
96
+ import type { ScheduledTaskLegacyRepo } from './repo/scheduledTaskLegacy';
96
97
  import type { TaskRepo } from './repo/task';
97
98
  import type { TicketRepo } from './repo/ticket';
98
99
  import type { TransactionRepo } from './repo/transaction';
@@ -498,6 +499,10 @@ export type ScheduledTask = ScheduledTaskRepo;
498
499
  export declare namespace ScheduledTask {
499
500
  function createInstance(...params: ConstructorParameters<typeof ScheduledTaskRepo>): Promise<ScheduledTaskRepo>;
500
501
  }
502
+ export type ScheduledTaskLegacy = ScheduledTaskLegacyRepo;
503
+ export declare namespace ScheduledTaskLegacy {
504
+ function createInstance(...params: ConstructorParameters<typeof ScheduledTaskLegacyRepo>): Promise<ScheduledTaskLegacyRepo>;
505
+ }
501
506
  export type Task = TaskRepo;
502
507
  export declare namespace Task {
503
508
  function createInstance(...params: ConstructorParameters<typeof TaskRepo>): Promise<TaskRepo>;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PaymentService = exports.Passport = exports.OwnershipInfo = exports.OrderNumber = exports.OrderInTransaction = exports.Order = exports.Offer = exports.OfferItemCondition = exports.OfferCatalogItem = exports.OfferCatalog = exports.NoteAboutOrder = exports.Note = exports.MovieTicketType = exports.Message = exports.MerchantReturnPolicy = exports.MemberProgram = exports.Member = exports.Issuer = exports.IdentityProvider = exports.Identity = exports.EventSeries = exports.EventSellerMakesOffer = exports.EventOffer = exports.Event = exports.EmailMessage = exports.CustomerType = exports.Customer = exports.Credentials = exports.CreativeWork = exports.ConfirmationNumber = exports.Authorization = exports.CategoryCode = exports.assetTransaction = exports.AssetTransaction = exports.Aggregation = exports.AggregateReservation = exports.AggregateOrder = exports.AggregateOffer = exports.AggregateTask = exports.AggregateScheduledTask = exports.AggregateAction = exports.AdminTask = exports.AdminScheduledTask = exports.AdminAsyncAction = exports.AdditionalProperty = exports.action = exports.Action = exports.AccountTitle = exports.AccountingReport = exports.AcceptedOffer = void 0;
4
- exports.WebSite = exports.rateLimit = exports.TransactionProcess = exports.TransactionNumber = exports.transaction = exports.Transaction = exports.Ticket = exports.AsyncActionLegacy = exports.AsyncAction = exports.Task = exports.ScheduledTask = exports.StockHolder = exports.setting = exports.Setting = exports.ServiceAvailableHour = exports.SellerReturnPolicy = exports.SellerPaymentAccepted = exports.SellerMakesOffer = exports.Seller = exports.Schedule = exports.Role = exports.ReserveInterface = exports.Reservation = exports.ProjectMakesOffer = exports.Project = exports.ProductHasOfferCatalog = exports.Product = exports.PriceSpecification = exports.PotentialAction = exports.place = exports.Person = exports.PendingReservation = exports.PaymentServiceProvider = exports.PaymentServiceChannel = void 0;
4
+ exports.WebSite = exports.rateLimit = exports.TransactionProcess = exports.TransactionNumber = exports.transaction = exports.Transaction = exports.Ticket = exports.AsyncActionLegacy = exports.AsyncAction = exports.Task = exports.ScheduledTaskLegacy = exports.ScheduledTask = exports.StockHolder = exports.setting = exports.Setting = exports.ServiceAvailableHour = exports.SellerReturnPolicy = exports.SellerPaymentAccepted = exports.SellerMakesOffer = exports.Seller = exports.Schedule = exports.Role = exports.ReserveInterface = exports.Reservation = exports.ProjectMakesOffer = exports.Project = exports.ProductHasOfferCatalog = exports.Product = exports.PriceSpecification = exports.PotentialAction = exports.place = exports.Person = exports.PendingReservation = exports.PaymentServiceProvider = exports.PaymentServiceChannel = void 0;
5
5
  var AcceptedOffer;
6
6
  (function (AcceptedOffer) {
7
7
  let repo;
@@ -1044,6 +1044,17 @@ var ScheduledTask;
1044
1044
  }
1045
1045
  ScheduledTask.createInstance = createInstance;
1046
1046
  })(ScheduledTask || (exports.ScheduledTask = ScheduledTask = {}));
1047
+ var ScheduledTaskLegacy;
1048
+ (function (ScheduledTaskLegacy) {
1049
+ let repo;
1050
+ async function createInstance(...params) {
1051
+ if (repo === undefined) {
1052
+ repo = (await import('./repo/scheduledTaskLegacy.js')).ScheduledTaskLegacyRepo;
1053
+ }
1054
+ return new repo(...params);
1055
+ }
1056
+ ScheduledTaskLegacy.createInstance = createInstance;
1057
+ })(ScheduledTaskLegacy || (exports.ScheduledTaskLegacy = ScheduledTaskLegacy = {}));
1047
1058
  var Task;
1048
1059
  (function (Task) {
1049
1060
  let repo;
package/package.json CHANGED
@@ -88,5 +88,5 @@
88
88
  "postversion": "git push origin --tags",
89
89
  "prepublishOnly": "npm run clean && npm run build"
90
90
  },
91
- "version": "26.0.0-alpha.6"
91
+ "version": "26.0.0-alpha.8"
92
92
  }