pnscheduler 0.1.0 → 0.2.0
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/README.md +1 -1
- package/dist/db/migration.js +1 -0
- package/dist/jobs.d.ts +3 -1
- package/dist/jobs.js +7 -1
- package/dist/scheduler.js +1 -4
- package/package.json +1 -1
package/README.md
CHANGED
@@ -81,7 +81,7 @@ await scheduler.scheduleJob("parameterized-job", new Date(2084, 0, 1), {
|
|
81
81
|
});
|
82
82
|
|
83
83
|
// With grace period (5 minutes)
|
84
|
-
await scheduler.scheduleJob("simple-job", new Date(2084, 0, 1), null,
|
84
|
+
await scheduler.scheduleJob("simple-job", new Date(2084, 0, 1), null, 300);
|
85
85
|
```
|
86
86
|
|
87
87
|
### Job Management
|
package/dist/db/migration.js
CHANGED
package/dist/jobs.d.ts
CHANGED
@@ -6,6 +6,7 @@ type JobRow = {
|
|
6
6
|
grace_period: number | null;
|
7
7
|
params: any | null;
|
8
8
|
status: JobStatus;
|
9
|
+
status_updated_at: Date | null;
|
9
10
|
};
|
10
11
|
export declare class Job {
|
11
12
|
id: number;
|
@@ -14,6 +15,7 @@ export declare class Job {
|
|
14
15
|
gracePeriod: number | null;
|
15
16
|
params: any;
|
16
17
|
status: JobStatus;
|
17
|
-
|
18
|
+
statusUpdatedAt: Date | null;
|
19
|
+
constructor({ id, name, execution_date, grace_period, params, status, status_updated_at, }: JobRow);
|
18
20
|
}
|
19
21
|
export {};
|
package/dist/jobs.js
CHANGED
@@ -14,6 +14,9 @@ function validateJobRow(row) {
|
|
14
14
|
if (typeof row.status !== "string" ||
|
15
15
|
!["pending", "executed", "failed", "skipped"].includes(row.status))
|
16
16
|
throw new Error(`Invalid job row column: status - ${row.status}`);
|
17
|
+
if (row.status_updated_at !== null &&
|
18
|
+
!(row.status_updated_at instanceof Date))
|
19
|
+
throw new Error(`Invalid job row column: status_updated_at - ${row.status_updated_at}`);
|
17
20
|
return row;
|
18
21
|
}
|
19
22
|
export class Job {
|
@@ -23,7 +26,8 @@ export class Job {
|
|
23
26
|
gracePeriod;
|
24
27
|
params;
|
25
28
|
status;
|
26
|
-
|
29
|
+
statusUpdatedAt;
|
30
|
+
constructor({ id, name, execution_date, grace_period, params, status, status_updated_at, }) {
|
27
31
|
const row = validateJobRow({
|
28
32
|
id,
|
29
33
|
name,
|
@@ -31,6 +35,7 @@ export class Job {
|
|
31
35
|
grace_period,
|
32
36
|
params,
|
33
37
|
status,
|
38
|
+
status_updated_at,
|
34
39
|
});
|
35
40
|
this.id = row.id;
|
36
41
|
this.name = row.name;
|
@@ -38,5 +43,6 @@ export class Job {
|
|
38
43
|
this.gracePeriod = row.grace_period;
|
39
44
|
this.params = row.params;
|
40
45
|
this.status = row.status;
|
46
|
+
this.statusUpdatedAt = row.status_updated_at;
|
41
47
|
}
|
42
48
|
}
|
package/dist/scheduler.js
CHANGED
@@ -59,10 +59,7 @@ class PNScheduler {
|
|
59
59
|
}
|
60
60
|
async #markJobStatusAs(job, status) {
|
61
61
|
this.#log(`Marking job "${job.name}" with id ${job.id} as ${status}...`);
|
62
|
-
await db.query(`UPDATE pnscheduler.jobs SET status = $1 WHERE id = $2`, [
|
63
|
-
status,
|
64
|
-
job.id,
|
65
|
-
]);
|
62
|
+
await db.query(`UPDATE pnscheduler.jobs SET status = $1, status_updated_at = NOW() WHERE id = $2`, [status, job.id]);
|
66
63
|
}
|
67
64
|
async findDueJobs() {
|
68
65
|
this.#log("Finding due jobs...");
|