Files
next-tjwater-server/resources/sql/011_workbench_work_orders.sql

30 lines
1.0 KiB
PL/PgSQL

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