23 lines
959 B
SQL
23 lines
959 B
SQL
-- Migration: 060_job_queue.sql
|
|
-- Description: Create jobs table for persistent worker queue
|
|
|
|
CREATE TABLE IF NOT EXISTS jobs (
|
|
id UUID PRIMARY KEY,
|
|
type VARCHAR(50) NOT NULL,
|
|
payload JSONB NOT NULL DEFAULT '{}',
|
|
status VARCHAR(20) NOT NULL DEFAULT 'pending', -- pending, processing, completed, failed
|
|
priority INT NOT NULL DEFAULT 2, -- 1=high, 2=medium, 3=low
|
|
run_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
|
started_at TIMESTAMP WITH TIME ZONE,
|
|
completed_at TIMESTAMP WITH TIME ZONE,
|
|
failed_at TIMESTAMP WITH TIME ZONE,
|
|
retries INT NOT NULL DEFAULT 0,
|
|
max_retries INT NOT NULL DEFAULT 3,
|
|
last_error TEXT
|
|
);
|
|
|
|
-- Index for efficient polling
|
|
CREATE INDEX IF NOT EXISTS idx_jobs_status_run_at ON jobs (status, run_at);
|
|
CREATE INDEX IF NOT EXISTS idx_jobs_type ON jobs (type);
|