@pgpm/database-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
 
@@ -23,5 +23,21 @@ CREATE TABLE app_jobs.jobs (
23
23
  CHECK (length(locked_by) > 3),
24
24
  UNIQUE (key)
25
25
  );
26
+
27
+ COMMENT ON TABLE app_jobs.jobs IS 'Background job queue with database scoping: each row is a pending or in-progress task for a specific database';
28
+ COMMENT ON COLUMN app_jobs.jobs.id IS 'Auto-incrementing job identifier';
29
+ COMMENT ON COLUMN app_jobs.jobs.database_id IS 'Database this job belongs to, for multi-tenant job isolation';
30
+ COMMENT ON COLUMN app_jobs.jobs.queue_name IS 'Name of the queue this job belongs to; used for worker routing and concurrency control';
31
+ COMMENT ON COLUMN app_jobs.jobs.task_identifier IS 'Identifier for the task type (maps to a worker handler function)';
32
+ COMMENT ON COLUMN app_jobs.jobs.payload IS 'JSON payload of arguments passed to the task handler';
33
+ COMMENT ON COLUMN app_jobs.jobs.priority IS 'Execution priority; lower numbers run first (default 0)';
34
+ COMMENT ON COLUMN app_jobs.jobs.run_at IS 'Earliest time this job should be executed; used for delayed/scheduled execution';
35
+ COMMENT ON COLUMN app_jobs.jobs.attempts IS 'Number of times this job has been attempted so far';
36
+ COMMENT ON COLUMN app_jobs.jobs.max_attempts IS 'Maximum retry attempts before the job is considered permanently failed';
37
+ COMMENT ON COLUMN app_jobs.jobs.key IS 'Optional unique deduplication key; prevents duplicate jobs with the same key';
38
+ COMMENT ON COLUMN app_jobs.jobs.last_error IS 'Error message from the most recent failed attempt';
39
+ COMMENT ON COLUMN app_jobs.jobs.locked_at IS 'Timestamp when a worker locked this job for processing';
40
+ COMMENT ON COLUMN app_jobs.jobs.locked_by IS 'Identifier of the worker that currently holds the lock';
41
+
26
42
  COMMIT;
27
43
 
@@ -23,5 +23,21 @@ CREATE TABLE app_jobs.scheduled_jobs (
23
23
  CHECK (length(locked_by) > 3),
24
24
  UNIQUE (key)
25
25
  );
26
+
27
+ COMMENT ON TABLE app_jobs.scheduled_jobs IS 'Recurring/cron-style job definitions with database scoping: each row spawns jobs on a schedule for a specific database';
28
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.id IS 'Auto-incrementing scheduled job identifier';
29
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.database_id IS 'Database this scheduled job belongs to, for multi-tenant isolation';
30
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.queue_name IS 'Name of the queue spawned jobs are placed into';
31
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.task_identifier IS 'Task type identifier for spawned jobs';
32
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.payload IS 'JSON payload passed to each spawned job';
33
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.priority IS 'Priority assigned to spawned jobs (lower = higher priority)';
34
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.max_attempts IS 'Max retry attempts for spawned jobs';
35
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.key IS 'Optional unique deduplication key';
36
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.locked_at IS 'Timestamp when the scheduler locked this record for processing';
37
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.locked_by IS 'Identifier of the scheduler worker holding the lock';
38
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.schedule_info IS 'JSON schedule configuration (e.g. cron expression, interval)';
39
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.last_scheduled IS 'Timestamp when a job was last spawned from this schedule';
40
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.last_scheduled_id IS 'ID of the last job spawned from this schedule';
41
+
26
42
  COMMIT;
27
43
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pgpm/database-jobs",
3
- "version": "0.16.0",
3
+ "version": "0.18.0",
4
4
  "description": "Database-specific job handling and queue management",
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
  "devDependencies": {
24
- "pgpm": "^1.3.0"
24
+ "pgpm": "^4.2.3"
25
25
  },
26
26
  "dependencies": {
27
- "@pgpm/verify": "0.16.0"
27
+ "@pgpm/verify": "0.18.0"
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
  }
@@ -134,6 +134,21 @@ CREATE TABLE app_jobs.scheduled_jobs (
134
134
  UNIQUE (key)
135
135
  );
136
136
 
137
+ COMMENT ON TABLE app_jobs.scheduled_jobs IS 'Recurring/cron-style job definitions with database scoping: each row spawns jobs on a schedule for a specific database';
138
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.id IS 'Auto-incrementing scheduled job identifier';
139
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.database_id IS 'Database this scheduled job belongs to, for multi-tenant isolation';
140
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.queue_name IS 'Name of the queue spawned jobs are placed into';
141
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.task_identifier IS 'Task type identifier for spawned jobs';
142
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.payload IS 'JSON payload passed to each spawned job';
143
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.priority IS 'Priority assigned to spawned jobs (lower = higher priority)';
144
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.max_attempts IS 'Max retry attempts for spawned jobs';
145
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.key IS 'Optional unique deduplication key';
146
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.locked_at IS 'Timestamp when the scheduler locked this record for processing';
147
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.locked_by IS 'Identifier of the scheduler worker holding the lock';
148
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.schedule_info IS 'JSON schedule configuration (e.g. cron expression, interval)';
149
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.last_scheduled IS 'Timestamp when a job was last spawned from this schedule';
150
+ COMMENT ON COLUMN app_jobs.scheduled_jobs.last_scheduled_id IS 'ID of the last job spawned from this schedule';
151
+
137
152
  CREATE FUNCTION app_jobs.do_notify() RETURNS trigger AS $EOFCODE$
138
153
  BEGIN
139
154
  PERFORM
@@ -176,6 +191,21 @@ CREATE TABLE app_jobs.jobs (
176
191
  UNIQUE (key)
177
192
  );
178
193
 
194
+ COMMENT ON TABLE app_jobs.jobs IS 'Background job queue with database scoping: each row is a pending or in-progress task for a specific database';
195
+ COMMENT ON COLUMN app_jobs.jobs.id IS 'Auto-incrementing job identifier';
196
+ COMMENT ON COLUMN app_jobs.jobs.database_id IS 'Database this job belongs to, for multi-tenant job isolation';
197
+ COMMENT ON COLUMN app_jobs.jobs.queue_name IS 'Name of the queue this job belongs to; used for worker routing and concurrency control';
198
+ COMMENT ON COLUMN app_jobs.jobs.task_identifier IS 'Identifier for the task type (maps to a worker handler function)';
199
+ COMMENT ON COLUMN app_jobs.jobs.payload IS 'JSON payload of arguments passed to the task handler';
200
+ COMMENT ON COLUMN app_jobs.jobs.priority IS 'Execution priority; lower numbers run first (default 0)';
201
+ COMMENT ON COLUMN app_jobs.jobs.run_at IS 'Earliest time this job should be executed; used for delayed/scheduled execution';
202
+ COMMENT ON COLUMN app_jobs.jobs.attempts IS 'Number of times this job has been attempted so far';
203
+ COMMENT ON COLUMN app_jobs.jobs.max_attempts IS 'Maximum retry attempts before the job is considered permanently failed';
204
+ COMMENT ON COLUMN app_jobs.jobs.key IS 'Optional unique deduplication key; prevents duplicate jobs with the same key';
205
+ COMMENT ON COLUMN app_jobs.jobs.last_error IS 'Error message from the most recent failed attempt';
206
+ COMMENT ON COLUMN app_jobs.jobs.locked_at IS 'Timestamp when a worker locked this job for processing';
207
+ COMMENT ON COLUMN app_jobs.jobs.locked_by IS 'Identifier of the worker that currently holds the lock';
208
+
179
209
  ALTER TABLE app_jobs.jobs
180
210
  ADD COLUMN created_at timestamptz;
181
211
 
@@ -275,6 +305,12 @@ CREATE TABLE app_jobs.job_queues (
275
305
  locked_by text
276
306
  );
277
307
 
308
+ COMMENT ON TABLE app_jobs.job_queues IS 'Queue metadata: tracks job counts and locking state for each named queue';
309
+ COMMENT ON COLUMN app_jobs.job_queues.queue_name IS 'Unique name identifying this queue';
310
+ COMMENT ON COLUMN app_jobs.job_queues.job_count IS 'Number of pending jobs in this queue';
311
+ COMMENT ON COLUMN app_jobs.job_queues.locked_at IS 'Timestamp when this queue was locked for batch processing';
312
+ COMMENT ON COLUMN app_jobs.job_queues.locked_by IS 'Identifier of the worker that currently holds the queue lock';
313
+
278
314
  CREATE INDEX job_queues_locked_by_idx ON app_jobs.job_queues (locked_by);
279
315
 
280
316
  GRANT SELECT, INSERT, UPDATE, DELETE ON app_jobs.job_queues TO administrator;
@@ -766,4 +802,4 @@ BEGIN
766
802
 
767
803
  RETURN v_job;
768
804
  END;
769
- $EOFCODE$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER;
805
+ $EOFCODE$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER;