pg-boss 10.2.0 → 10.3.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pg-boss",
3
- "version": "10.2.0",
3
+ "version": "10.3.1",
4
4
  "description": "Queueing jobs in Postgres from Node.js like a boss",
5
5
  "main": "./src/index.js",
6
6
  "engines": {
@@ -8,11 +8,11 @@
8
8
  },
9
9
  "dependencies": {
10
10
  "cron-parser": "^4.9.0",
11
- "pg": "^8.14.1",
11
+ "pg": "^8.16.0",
12
12
  "serialize-error": "^8.1.0"
13
13
  },
14
14
  "devDependencies": {
15
- "@types/node": "^20.17.30",
15
+ "@types/node": "^20.17.57",
16
16
  "luxon": "^3.6.1",
17
17
  "mocha": "^10.8.2",
18
18
  "nyc": "^17.1.0",
package/src/manager.js CHANGED
@@ -50,6 +50,7 @@ class Manager extends EventEmitter {
50
50
  this.cancelJobsCommand = plans.cancelJobs(config.schema)
51
51
  this.resumeJobsCommand = plans.resumeJobs(config.schema)
52
52
  this.deleteJobsCommand = plans.deleteJobs(config.schema)
53
+ this.retryJobsCommand = plans.retryJobs(config.schema)
53
54
  this.failJobsByIdCommand = plans.failJobsById(config.schema)
54
55
  this.getJobByIdCommand = plans.getJobById(config.schema)
55
56
  this.getArchivedJobByIdCommand = plans.getArchivedJobById(config.schema)
@@ -69,6 +70,7 @@ class Manager extends EventEmitter {
69
70
  this.complete,
70
71
  this.cancel,
71
72
  this.resume,
73
+ this.retry,
72
74
  this.deleteJob,
73
75
  this.fail,
74
76
  this.fetch,
@@ -516,6 +518,14 @@ class Manager extends EventEmitter {
516
518
  return this.mapCommandResponse(ids, result)
517
519
  }
518
520
 
521
+ async retry (name, id, options = {}) {
522
+ Attorney.assertQueueName(name)
523
+ const db = options.db || this.db
524
+ const ids = this.mapCompletionIdArg(id, 'resume')
525
+ const result = await db.executeSql(this.retryJobsCommand, [name, ids])
526
+ return this.mapCommandResponse(ids, result)
527
+ }
528
+
519
529
  async createQueue (name, options = {}) {
520
530
  name = name || options.name
521
531
 
package/src/plans.js CHANGED
@@ -29,6 +29,7 @@ module.exports = {
29
29
  cancelJobs,
30
30
  resumeJobs,
31
31
  deleteJobs,
32
+ retryJobs,
32
33
  failJobsById,
33
34
  failJobsByTimeout,
34
35
  insertJob,
@@ -733,6 +734,21 @@ function deleteJobs (schema) {
733
734
  `
734
735
  }
735
736
 
737
+ function retryJobs (schema) {
738
+ return `
739
+ with results as (
740
+ UPDATE ${schema}.job
741
+ SET state = '${JOB_STATES.retry}',
742
+ retry_limit = retry_limit + 1
743
+ WHERE name = $1
744
+ AND id IN (SELECT UNNEST($2::uuid[]))
745
+ AND state = '${JOB_STATES.failed}'
746
+ RETURNING 1
747
+ )
748
+ SELECT COUNT(*) from results
749
+ `
750
+ }
751
+
736
752
  function insertJob (schema) {
737
753
  return `
738
754
  INSERT INTO ${schema}.job (
package/types.d.ts CHANGED
@@ -129,6 +129,7 @@ declare namespace PgBoss {
129
129
  includeMetadata?: boolean;
130
130
  priority?: boolean;
131
131
  batchSize?: number;
132
+ ignoreStartAfter?: boolean;
132
133
  }
133
134
 
134
135
  type WorkOptions = JobFetchOptions & JobPollingOptions
@@ -334,6 +335,9 @@ declare class PgBoss extends EventEmitter {
334
335
  resume(name: string, id: string, options?: PgBoss.ConnectionOptions): Promise<void>;
335
336
  resume(name: string, ids: string[], options?: PgBoss.ConnectionOptions): Promise<void>;
336
337
 
338
+ retry(name: string, id: string, options?: PgBoss.ConnectionOptions): Promise<void>;
339
+ retry(name: string, ids: string[], options?: PgBoss.ConnectionOptions): Promise<void>;
340
+
337
341
  deleteJob(name: string, id: string, options?: PgBoss.ConnectionOptions): Promise<void>;
338
342
  deleteJob(name: string, ids: string[], options?: PgBoss.ConnectionOptions): Promise<void>;
339
343