@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.
@@ -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
  */
@@ -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
@@ -112,5 +112,5 @@
112
112
  "postversion": "git push origin --tags",
113
113
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
114
114
  },
115
- "version": "22.9.0-alpha.57"
115
+ "version": "22.9.0-alpha.58"
116
116
  }