-- 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);