From fc9faa90e2f45802f0e946fb52e3e299d0b98719 Mon Sep 17 00:00:00 2001 From: Emmie Maeda Date: Sat, 13 Jan 2024 15:27:54 -0500 Subject: [PATCH] Add queries for jobs, including adding dead letter queue. --- migrations/20240112_01_Njk7j-create-initial-tables.sql | 9 +++++++++ queries/add_dead_job.sql | 3 +++ queries/add_job.sql | 2 ++ queries/delete_job.sql | 2 ++ queries/fail_job.sql | 2 ++ queries/get_jobs.sql | 3 +++ 6 files changed, 21 insertions(+) create mode 100644 queries/add_dead_job.sql create mode 100644 queries/add_job.sql create mode 100644 queries/delete_job.sql create mode 100644 queries/fail_job.sql create mode 100644 queries/get_jobs.sql diff --git a/migrations/20240112_01_Njk7j-create-initial-tables.sql b/migrations/20240112_01_Njk7j-create-initial-tables.sql index 10d6fd4..d09f87b 100644 --- a/migrations/20240112_01_Njk7j-create-initial-tables.sql +++ b/migrations/20240112_01_Njk7j-create-initial-tables.sql @@ -46,7 +46,16 @@ CREATE TABLE job ( job_id SERIAL PRIMARY KEY, job_type TEXT NOT NULL, job_object TEXT NOT NULL, + attempts INTEGER NOT NULL DEFAULT 0, data JSON NOT NULL, UNIQUE (job_type, job_object) ); + +CREATE TABLE job_dead ( + job_id INTEGER PRIMARY KEY, + buried_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), + job_type TEXT NOT NULL, + job_object TEXT NOT NULL + data JSON NOT NULL +); diff --git a/queries/add_dead_job.sql b/queries/add_dead_job.sql new file mode 100644 index 0000000..ca71b28 --- /dev/null +++ b/queries/add_dead_job.sql @@ -0,0 +1,3 @@ +-- :name add_dead_job :insert +INSERT INTO job_dead (job_id, job_type, job_object, data) + VALUES (:job_id, :job_type, :job_object, :data) diff --git a/queries/add_job.sql b/queries/add_job.sql new file mode 100644 index 0000000..7cd2bea --- /dev/null +++ b/queries/add_job.sql @@ -0,0 +1,2 @@ +-- :name add_job :insert +INSERT INTO job (job_type, job_object, data) VALUES (:job_type, :job_object, :data) diff --git a/queries/delete_job.sql b/queries/delete_job.sql new file mode 100644 index 0000000..efd466d --- /dev/null +++ b/queries/delete_job.sql @@ -0,0 +1,2 @@ +-- :name delete_job :affected +DELETE FROM job WHERE job_id = :job_id diff --git a/queries/fail_job.sql b/queries/fail_job.sql new file mode 100644 index 0000000..bbf2720 --- /dev/null +++ b/queries/fail_job.sql @@ -0,0 +1,2 @@ +-- :name fail_job :affected +UPDATE job SET attempts = attempts + 1 WHERE job_id = :job_id diff --git a/queries/get_jobs.sql b/queries/get_jobs.sql new file mode 100644 index 0000000..e3228da --- /dev/null +++ b/queries/get_jobs.sql @@ -0,0 +1,3 @@ +-- :name get_job :many +-- Select jobs randomly to avoid bias or potential loops +SELECT * FROM job TABLESAMPLE SYSTEM (2);