@@ -2,7 +2,17 @@ import humanInterval from 'human-interval';
22import { Result , err , ok } from 'neverthrow' ;
33import CronExpressionParser from 'cron-parser' ;
44
5- import { CronSchedule , Handler , IntervalSchedule , JobParameters , MomoJob , TypedMomoJob , isCronJob } from './MomoJob' ;
5+ import {
6+ CronSchedule ,
7+ Handler ,
8+ IntervalSchedule ,
9+ JobParameters ,
10+ MomoJob ,
11+ NeverSchedule ,
12+ TypedMomoJob ,
13+ isCronJob ,
14+ isNeverJob ,
15+ } from './MomoJob' ;
616import { momoError } from '../logging/error/MomoError' ;
717
818export const maxNodeTimeoutDelay = 2147483647 ;
@@ -13,7 +23,7 @@ export interface ParsedIntervalSchedule extends Required<IntervalSchedule> {
1323 parsedFirstRunAfter : number ;
1424}
1525
16- export interface JobDefinition < JobSchedule = ParsedIntervalSchedule | CronSchedule > {
26+ export interface JobDefinition < JobSchedule = ParsedIntervalSchedule | CronSchedule | NeverSchedule > {
1727 name : string ;
1828 schedule : JobSchedule ;
1929 concurrency : number ;
@@ -22,7 +32,7 @@ export interface JobDefinition<JobSchedule = ParsedIntervalSchedule | CronSchedu
2232 parameters ?: JobParameters ;
2333}
2434
25- export interface Job < Schedule = ParsedIntervalSchedule | CronSchedule > extends JobDefinition < Schedule > {
35+ export interface Job < Schedule = ParsedIntervalSchedule | CronSchedule | NeverSchedule > extends JobDefinition < Schedule > {
2636 handler : Handler ;
2737}
2838
@@ -46,7 +56,19 @@ export function tryToJob(momoJob: MomoJob): Result<Job, Error> {
4656 return err ( momoError . invalidTimeout ) ;
4757 }
4858
49- return isCronJob ( momoJob ) ? tryToCronJob ( momoJob ) : tryToIntervalJob ( momoJob ) ;
59+ return isNeverJob ( momoJob )
60+ ? tryToNeverJob ( momoJob )
61+ : isCronJob ( momoJob )
62+ ? tryToCronJob ( momoJob )
63+ : tryToIntervalJob ( momoJob ) ;
64+ }
65+
66+ export function tryToNeverJob ( momoJob : TypedMomoJob < NeverSchedule > ) : Result < Job < NeverSchedule > , Error > {
67+ return ok ( {
68+ concurrency : 1 ,
69+ maxRunning : 0 ,
70+ ...momoJob ,
71+ } ) ;
5072}
5173
5274/**
@@ -111,7 +133,7 @@ export function tryToCronJob(momoJob: TypedMomoJob<CronSchedule>): Result<Job<Cr
111133 * @param job
112134 */
113135export function toJobDefinition <
114- Schedule extends ParsedIntervalSchedule | CronSchedule ,
136+ Schedule extends ParsedIntervalSchedule | CronSchedule | NeverSchedule ,
115137 Type extends JobDefinition < Schedule > ,
116138> ( { name, schedule, maxRunning, concurrency, timeout, parameters } : Type ) : JobDefinition < Schedule > {
117139 return { name, schedule, maxRunning, concurrency, timeout, parameters } ;
0 commit comments