@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.
- package/lib/chevre/repo/asyncActionLegacy.d.ts +1 -2
- package/lib/chevre/repo/scheduledTaskLegacy.d.ts +19 -0
- package/lib/chevre/repo/scheduledTaskLegacy.js +42 -0
- package/lib/chevre/repo/task.d.ts +7 -15
- package/lib/chevre/repo/task.js +43 -29
- package/lib/chevre/repository.d.ts +5 -0
- package/lib/chevre/repository.js +12 -1
- package/package.json +1 -1
|
@@ -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
|
|
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
|
-
|
|
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もセットする
|
package/lib/chevre/repo/task.js
CHANGED
|
@@ -407,12 +407,12 @@ class TaskRepo {
|
|
|
407
407
|
/**
|
|
408
408
|
* Runningのまま一定期間超過し、かつ、remainingNumberOfTries>0のタスクをReadyに変更する
|
|
409
409
|
*/
|
|
410
|
-
async
|
|
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
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
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>;
|
package/lib/chevre/repository.js
CHANGED
|
@@ -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