veza/veza-backend-api/migrations/060_job_queue.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);