@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.
|
|
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.
|
|
24
|
+
"@pgpm/verify": "0.18.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"pgpm": "^
|
|
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": "
|
|
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;
|