-
Notifications
You must be signed in to change notification settings - Fork 22
/
JobParameters.ts
48 lines (41 loc) · 1.12 KB
/
JobParameters.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import { FilterQuery, ObjectId } from 'mongodb';
export interface IJobParameters<DATA = unknown | void> {
_id?: ObjectId;
name: string;
priority: number;
nextRunAt: Date | null;
/**
* normal: job is queued and will be processed (regular case when the user adds a new job)
* single: job with this name is only queued once, if there is an exisitn gentry in the database, the job is just updated, but not newly inserted (this is used for .every())
*/
type: 'normal' | 'single';
lockedAt?: Date;
lastFinishedAt?: Date;
failedAt?: Date;
failCount?: number;
failReason?: string;
repeatTimezone?: string;
lastRunAt?: Date;
repeatInterval?: string | number;
data: DATA;
repeatAt?: string;
disabled?: boolean;
progress?: number;
// unique query object
unique?: FilterQuery<IJobParameters<DATA>>;
uniqueOpts?: {
insertOnly: boolean;
};
lastModifiedBy?: string;
}
export type TJobDatefield = keyof Pick<
IJobParameters,
'lastRunAt' | 'lastFinishedAt' | 'nextRunAt' | 'failedAt' | 'lockedAt'
>;
export const datefields: Array<TJobDatefield> = [
'lastRunAt',
'lastFinishedAt',
'nextRunAt',
'failedAt',
'lockedAt'
];