@chevre/domain 22.9.0-alpha.57 → 22.9.0-alpha.58
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/task.d.ts +9 -0
- package/lib/chevre/repo/task.js +38 -28
- package/package.json +1 -1
|
@@ -86,6 +86,15 @@ export declare class TaskRepo {
|
|
|
86
86
|
$lt: Date;
|
|
87
87
|
};
|
|
88
88
|
}): Promise<IExecutableTask<factory.taskName> | null>;
|
|
89
|
+
findExecutableOne(params: {
|
|
90
|
+
name?: {
|
|
91
|
+
$eq?: factory.taskName;
|
|
92
|
+
$nin?: factory.taskName[];
|
|
93
|
+
};
|
|
94
|
+
runsAt: {
|
|
95
|
+
$lt: Date;
|
|
96
|
+
};
|
|
97
|
+
}): Promise<IExecutableTask<factory.taskName> | null>;
|
|
89
98
|
/**
|
|
90
99
|
* emit OnTaskStatusChanged on delayed tasks
|
|
91
100
|
*/
|
package/lib/chevre/repo/task.js
CHANGED
|
@@ -22,6 +22,19 @@ const sortOrder4executionOfTasks = {
|
|
|
22
22
|
numberOfTried: factory.sortType.Ascending, // トライ回数の少なさ優先
|
|
23
23
|
runsAt: factory.sortType.Ascending // 実行予定日時の早さ優先
|
|
24
24
|
};
|
|
25
|
+
const executableTaskProjection = {
|
|
26
|
+
_id: 0,
|
|
27
|
+
id: { $toString: '$_id' },
|
|
28
|
+
// 必要最低限にprojection(2024-04-23~)
|
|
29
|
+
data: 1,
|
|
30
|
+
name: 1,
|
|
31
|
+
status: 1,
|
|
32
|
+
numberOfTried: 1,
|
|
33
|
+
project: 1,
|
|
34
|
+
remainingNumberOfTries: 1,
|
|
35
|
+
runsAt: 1,
|
|
36
|
+
expires: 1
|
|
37
|
+
};
|
|
25
38
|
// type IProjection = { [key in IKeyOfProjection]?: 0 | 1; };
|
|
26
39
|
const AVAILABLE_PROJECT_FIELDS = [
|
|
27
40
|
'identifier',
|
|
@@ -358,19 +371,6 @@ class TaskRepo {
|
|
|
358
371
|
}
|
|
359
372
|
executeById(params) {
|
|
360
373
|
return __awaiter(this, void 0, void 0, function* () {
|
|
361
|
-
const projection = {
|
|
362
|
-
_id: 0,
|
|
363
|
-
id: { $toString: '$_id' },
|
|
364
|
-
// 必要最低限にprojection(2024-04-23~)
|
|
365
|
-
data: 1,
|
|
366
|
-
name: 1,
|
|
367
|
-
status: 1,
|
|
368
|
-
numberOfTried: 1,
|
|
369
|
-
project: 1,
|
|
370
|
-
remainingNumberOfTries: 1,
|
|
371
|
-
runsAt: 1,
|
|
372
|
-
expires: 1
|
|
373
|
-
};
|
|
374
374
|
const doc = yield this.taskModel.findOneAndUpdate({
|
|
375
375
|
status: { $eq: factory.taskStatus.Ready },
|
|
376
376
|
runsAt: { $lt: new Date() },
|
|
@@ -385,7 +385,7 @@ class TaskRepo {
|
|
|
385
385
|
remainingNumberOfTries: -1, // 残りトライ可能回数減らす
|
|
386
386
|
numberOfTried: 1 // トライ回数増やす
|
|
387
387
|
}
|
|
388
|
-
}, { new: true, projection })
|
|
388
|
+
}, { new: true, projection: executableTaskProjection })
|
|
389
389
|
.lean() // lean(2024-09-26~)
|
|
390
390
|
.exec();
|
|
391
391
|
if (doc === null) {
|
|
@@ -404,19 +404,6 @@ class TaskRepo {
|
|
|
404
404
|
if (!(params.runsAt.$lt instanceof Date)) {
|
|
405
405
|
throw new factory.errors.Argument('runsAt.$lt', 'must be Date');
|
|
406
406
|
}
|
|
407
|
-
const projection = {
|
|
408
|
-
_id: 0,
|
|
409
|
-
id: { $toString: '$_id' },
|
|
410
|
-
// 必要最低限にprojection(2024-04-23~)
|
|
411
|
-
data: 1,
|
|
412
|
-
name: 1,
|
|
413
|
-
status: 1,
|
|
414
|
-
numberOfTried: 1,
|
|
415
|
-
project: 1,
|
|
416
|
-
remainingNumberOfTries: 1,
|
|
417
|
-
runsAt: 1,
|
|
418
|
-
expires: 1
|
|
419
|
-
};
|
|
420
407
|
const nameEq = (_a = params.name) === null || _a === void 0 ? void 0 : _a.$eq;
|
|
421
408
|
const nameNin = (_b = params.name) === null || _b === void 0 ? void 0 : _b.$nin;
|
|
422
409
|
const doc = yield this.taskModel.findOneAndUpdate(Object.assign({ status: { $eq: factory.taskStatus.Ready }, runsAt: { $lt: params.runsAt.$lt } }, (typeof nameEq === 'string' || Array.isArray(nameNin))
|
|
@@ -433,7 +420,7 @@ class TaskRepo {
|
|
|
433
420
|
remainingNumberOfTries: -1, // 残りトライ可能回数減らす
|
|
434
421
|
numberOfTried: 1 // トライ回数増やす
|
|
435
422
|
}
|
|
436
|
-
}, { new: true, projection })
|
|
423
|
+
}, { new: true, projection: executableTaskProjection })
|
|
437
424
|
.sort(sortOrder4executionOfTasks)
|
|
438
425
|
.lean() // lean(2024-09-26~)
|
|
439
426
|
.exec();
|
|
@@ -444,6 +431,29 @@ class TaskRepo {
|
|
|
444
431
|
return doc;
|
|
445
432
|
});
|
|
446
433
|
}
|
|
434
|
+
findExecutableOne(params) {
|
|
435
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
436
|
+
var _a, _b;
|
|
437
|
+
if (!(params.runsAt.$lt instanceof Date)) {
|
|
438
|
+
throw new factory.errors.Argument('runsAt.$lt', 'must be Date');
|
|
439
|
+
}
|
|
440
|
+
const nameEq = (_a = params.name) === null || _a === void 0 ? void 0 : _a.$eq;
|
|
441
|
+
const nameNin = (_b = params.name) === null || _b === void 0 ? void 0 : _b.$nin;
|
|
442
|
+
const doc = yield this.taskModel.findOne(Object.assign({ status: { $eq: factory.taskStatus.Ready }, runsAt: { $lt: params.runsAt.$lt } }, (typeof nameEq === 'string' || Array.isArray(nameNin))
|
|
443
|
+
? {
|
|
444
|
+
name: Object.assign(Object.assign({}, (typeof nameEq === 'string') ? { $eq: nameEq } : undefined), (Array.isArray(nameNin)) ? { $nin: nameNin } : undefined)
|
|
445
|
+
}
|
|
446
|
+
: undefined), executableTaskProjection)
|
|
447
|
+
.sort(sortOrder4executionOfTasks)
|
|
448
|
+
.lean()
|
|
449
|
+
.exec();
|
|
450
|
+
if (doc === null) {
|
|
451
|
+
// tslint:disable-next-line:no-null-keyword
|
|
452
|
+
return null;
|
|
453
|
+
}
|
|
454
|
+
return doc;
|
|
455
|
+
});
|
|
456
|
+
}
|
|
447
457
|
/**
|
|
448
458
|
* emit OnTaskStatusChanged on delayed tasks
|
|
449
459
|
*/
|
package/package.json
CHANGED