-- Historical work-order projection. Do not reapply after -- 021_retire_workbench_work_orders.sql has retired this table. BEGIN; CREATE SCHEMA IF NOT EXISTS workbench; CREATE TABLE IF NOT EXISTS workbench.work_orders ( project_id uuid NOT NULL, work_order_id text NOT NULL CHECK (length(work_order_id) > 0), scheduled_at timestamptz NOT NULL, updated_at timestamptz NOT NULL, document jsonb NOT NULL, PRIMARY KEY (project_id, work_order_id), CHECK ((jsonb_typeof(document) = 'object' AND document->>'id' = work_order_id AND (document->>'scheduled_at')::timestamptz = scheduled_at AND (document->>'updated_at')::timestamptz = updated_at) IS TRUE) ); CREATE INDEX IF NOT EXISTS work_orders_project_schedule_idx ON workbench.work_orders(project_id, scheduled_at, work_order_id); CREATE INDEX IF NOT EXISTS work_orders_project_updated_idx ON workbench.work_orders(project_id, updated_at DESC, work_order_id); REVOKE ALL ON workbench.work_orders FROM PUBLIC; COMMIT;