30 lines
1.0 KiB
PL/PgSQL
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;
|