Add full sortof codebase: API, drain workers, frontend, schema, specs
This commit is contained in:
29
init/02_sort_jobs.sql
Normal file
29
init/02_sort_jobs.sql
Normal file
@@ -0,0 +1,29 @@
|
||||
-- Async sort jobs: lifecycle + result for collection expansion + cold drains.
|
||||
-- Created 2026-05-01 (Spec B+F).
|
||||
-- Depends on: 01_schema.sql (touch_updated_at() function, pgcrypto extension).
|
||||
-- Docker initdb runs files alphabetically, so 01_ executes first; for live
|
||||
-- one-shot psql application against an existing DB, both prerequisites
|
||||
-- already exist.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS sort_jobs (
|
||||
job_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
phase TEXT NOT NULL CHECK (phase IN ('expanding','queued','draining','done','failed')),
|
||||
phase_started_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
input_raw TEXT NOT NULL,
|
||||
collection_ids TEXT[] NOT NULL DEFAULT '{}',
|
||||
wsids TEXT[],
|
||||
rules_raw TEXT,
|
||||
result_json JSONB,
|
||||
failure_reason TEXT
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS sort_jobs_phase_idx ON sort_jobs (phase);
|
||||
CREATE INDEX IF NOT EXISTS sort_jobs_updated_idx ON sort_jobs (updated_at);
|
||||
|
||||
DROP TRIGGER IF EXISTS sort_jobs_touch ON sort_jobs;
|
||||
CREATE TRIGGER sort_jobs_touch
|
||||
BEFORE UPDATE ON sort_jobs
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION touch_updated_at();
|
||||
Reference in New Issue
Block a user