@pgpm/jobs 0.16.0 → 0.18.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.
@@ -8,5 +8,12 @@ CREATE TABLE app_jobs.job_queues (
8
8
  locked_at timestamptz,
9
9
  locked_by text
10
10
  );
11
+
12
+ COMMENT ON TABLE app_jobs.job_queues IS 'Queue metadata: tracks job counts and locking state for each named queue';
13
+ COMMENT ON COLUMN app_jobs.job_queues.queue_name IS 'Unique name identifying this queue';
14
+ COMMENT ON COLUMN app_jobs.job_queues.job_count IS 'Number of pending jobs in this queue';
15
+ COMMENT ON COLUMN app_jobs.job_queues.locked_at IS 'Timestamp when this queue was locked for batch processing';
16
+ COMMENT ON COLUMN app_jobs.job_queues.locked_by IS 'Identifier of the worker that currently holds the queue lock';
17
+
11
18
  COMMIT;
12
19
 
@@ -22,5 +22,20 @@ CREATE TABLE app_jobs.jobs (
22
22
  CHECK (length(locked_by) > 3),
23
23
  UNIQUE (key)
24
24
  );
25
+
26
+ COMMENT ON TABLE app_jobs.jobs IS 'Background job queue: each row is a pending or in-progress task to be executed by a worker';
27
+ COMMENT ON COLUMN app_jobs.jobs.id IS 'Auto-incrementing job identifier';
28
+ COMMENT ON COLUMN app_jobs.jobs.queue_name IS 'Name of the queue this job belongs to; used for worker routing and concurrency control';
29
+ COMMENT ON COLUMN app_jobs.jobs.task_identifier IS 'Identifier for the task type (maps to a worker handler function)';
30
+ COMMENT ON COLUMN app_jobs.jobs.payload IS 'JSON payload of arguments passed to the task handler';
31
+ COMMENT ON COLUMN app_jobs.jobs.priority IS 'Execution priority; lower numbers run first (default 0)';
32
+ COMMENT ON COLUMN app_jobs.jobs.run_at IS 'Earliest time this job should be executed; used for delayed/scheduled execution';
33
+ COMMENT ON COLUMN app_jobs.jobs.attempts IS 'Number of times this job has been attempted so far';
34
+ COMMENT ON COLUMN app_jobs.jobs.max_attempts IS 'Maximum retry attempts before the job is considered permanently failed';
35
+ COMMENT ON COLUMN app_jobs.jobs.key IS 'Optional unique deduplication key; prevents duplicate jobs with the same key';
36
+ COMMENT ON COLUMN app_jobs.jobs.last_error IS 'Error message from the most recent failed attempt';
37
+ COMMENT ON COLUMN app_jobs.jobs.locked_at IS 'Timestamp when a worker locked this job for processing';
38
+ COMMENT ON COLUMN app_jobs.jobs.locked_by IS 'Identifier of the worker that currently holds the lock';
39
+
25
40
  COMMIT;
26
41
 
@@ -22,5 +22,20 @@ CREATE TABLE app_jobs.scheduled_jobs (
22
22
  CHECK (length(locked_by) > 3),
23
23
  UNIQUE (key)
24
24
  );
25
+
26
+ COMMENT ON TABLE app_jobs.scheduled_jobs IS 'Recurring/cron-style job definitions: each row spawns jobs on a schedule defined by schedule_info';
27
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.id IS 'Auto-incrementing scheduled job identifier';
28
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.queue_name IS 'Name of the queue spawned jobs are placed into';
29
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.task_identifier IS 'Task type identifier for spawned jobs';
30
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.payload IS 'JSON payload passed to each spawned job';
31
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.priority IS 'Priority assigned to spawned jobs (lower = higher priority)';
32
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.max_attempts IS 'Max retry attempts for spawned jobs';
33
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.key IS 'Optional unique deduplication key';
34
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.locked_at IS 'Timestamp when the scheduler locked this record for processing';
35
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.locked_by IS 'Identifier of the scheduler worker holding the lock';
36
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.schedule_info IS 'JSON schedule configuration (e.g. cron expression, interval)';
37
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.last_scheduled IS 'Timestamp when a job was last spawned from this schedule';
38
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.last_scheduled_id IS 'ID of the last job spawned from this schedule';
39
+
25
40
  COMMIT;
26
41
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pgpm/jobs",
3
- "version": "0.16.0",
3
+ "version": "0.18.0",
4
4
  "description": "Core job system for background task processing in PostgreSQL",
5
5
  "author": "Dan Lynch <pyramation@gmail.com>",
6
6
  "contributors": [
@@ -21,10 +21,10 @@
21
21
  "test:watch": "jest --watch"
22
22
  },
23
23
  "dependencies": {
24
- "@pgpm/verify": "0.16.0"
24
+ "@pgpm/verify": "0.18.0"
25
25
  },
26
26
  "devDependencies": {
27
- "pgpm": "^1.3.0"
27
+ "pgpm": "^4.2.3"
28
28
  },
29
29
  "repository": {
30
30
  "type": "git",
@@ -34,5 +34,5 @@
34
34
  "bugs": {
35
35
  "url": "https://github.com/constructive-io/pgpm-modules/issues"
36
36
  },
37
- "gitHead": "3b2260bf7640d7194f237d556c7e5033bc7a9405"
37
+ "gitHead": "8144027c7fab4956bcdebd736d04c0d4f57344bc"
38
38
  }
@@ -133,6 +133,20 @@ CREATE TABLE app_jobs.scheduled_jobs (
133
133
  UNIQUE (key)
134
134
  );
135
135
 
136
+ COMMENT ON TABLE app_jobs.scheduled_jobs IS 'Recurring/cron-style job definitions: each row spawns jobs on a schedule defined by schedule_info';
137
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.id IS 'Auto-incrementing scheduled job identifier';
138
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.queue_name IS 'Name of the queue spawned jobs are placed into';
139
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.task_identifier IS 'Task type identifier for spawned jobs';
140
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.payload IS 'JSON payload passed to each spawned job';
141
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.priority IS 'Priority assigned to spawned jobs (lower = higher priority)';
142
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.max_attempts IS 'Max retry attempts for spawned jobs';
143
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.key IS 'Optional unique deduplication key';
144
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.locked_at IS 'Timestamp when the scheduler locked this record for processing';
145
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.locked_by IS 'Identifier of the scheduler worker holding the lock';
146
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.schedule_info IS 'JSON schedule configuration (e.g. cron expression, interval)';
147
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.last_scheduled IS 'Timestamp when a job was last spawned from this schedule';
148
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.last_scheduled_id IS 'ID of the last job spawned from this schedule';
149
+
136
150
  CREATE FUNCTION app_jobs.do_notify() RETURNS trigger AS $EOFCODE$
137
151
  BEGIN
138
152
  PERFORM
@@ -174,6 +188,20 @@ CREATE TABLE app_jobs.jobs (
174
188
  UNIQUE (key)
175
189
  );
176
190
 
191
+ COMMENT ON TABLE app_jobs.jobs IS 'Background job queue: each row is a pending or in-progress task to be executed by a worker';
192
+ COMMENT ON COLUMN app_jobs.jobs.id IS 'Auto-incrementing job identifier';
193
+ COMMENT ON COLUMN app_jobs.jobs.queue_name IS 'Name of the queue this job belongs to; used for worker routing and concurrency control';
194
+ COMMENT ON COLUMN app_jobs.jobs.task_identifier IS 'Identifier for the task type (maps to a worker handler function)';
195
+ COMMENT ON COLUMN app_jobs.jobs.payload IS 'JSON payload of arguments passed to the task handler';
196
+ COMMENT ON COLUMN app_jobs.jobs.priority IS 'Execution priority; lower numbers run first (default 0)';
197
+ COMMENT ON COLUMN app_jobs.jobs.run_at IS 'Earliest time this job should be executed; used for delayed/scheduled execution';
198
+ COMMENT ON COLUMN app_jobs.jobs.attempts IS 'Number of times this job has been attempted so far';
199
+ COMMENT ON COLUMN app_jobs.jobs.max_attempts IS 'Maximum retry attempts before the job is considered permanently failed';
200
+ COMMENT ON COLUMN app_jobs.jobs.key IS 'Optional unique deduplication key; prevents duplicate jobs with the same key';
201
+ COMMENT ON COLUMN app_jobs.jobs.last_error IS 'Error message from the most recent failed attempt';
202
+ COMMENT ON COLUMN app_jobs.jobs.locked_at IS 'Timestamp when a worker locked this job for processing';
203
+ COMMENT ON COLUMN app_jobs.jobs.locked_by IS 'Identifier of the worker that currently holds the lock';
204
+
177
205
  ALTER TABLE app_jobs.jobs
178
206
  ADD COLUMN created_at timestamptz;
179
207
 
@@ -273,6 +301,12 @@ CREATE TABLE app_jobs.job_queues (
273
301
  locked_by text
274
302
  );
275
303
 
304
+ COMMENT ON TABLE app_jobs.job_queues IS 'Queue metadata: tracks job counts and locking state for each named queue';
305
+ COMMENT ON COLUMN app_jobs.job_queues.queue_name IS 'Unique name identifying this queue';
306
+ COMMENT ON COLUMN app_jobs.job_queues.job_count IS 'Number of pending jobs in this queue';
307
+ COMMENT ON COLUMN app_jobs.job_queues.locked_at IS 'Timestamp when this queue was locked for batch processing';
308
+ COMMENT ON COLUMN app_jobs.job_queues.locked_by IS 'Identifier of the worker that currently holds the queue lock';
309
+
276
310
  CREATE INDEX job_queues_locked_by_idx ON app_jobs.job_queues (locked_by);
277
311
 
278
312
  GRANT SELECT, INSERT, UPDATE, DELETE ON app_jobs.job_queues TO administrator;
@@ -655,4 +689,4 @@ BEGIN
655
689
  * INTO v_job;
656
690
  RETURN v_job;
657
691
  END;
658
- $EOFCODE$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER;
692
+ $EOFCODE$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER;