27 lines
1020 B
MySQL
27 lines
1020 B
MySQL
|
|
BEGIN;
|
||
|
|
|
||
|
|
-- =======================
|
||
|
|
-- DISPOSITION ROUTES
|
||
|
|
-- =======================
|
||
|
|
CREATE TABLE IF NOT EXISTS disposition_routes (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
from_department_id UUID NOT NULL REFERENCES departments(id) ON DELETE CASCADE,
|
||
|
|
to_department_id UUID NOT NULL REFERENCES departments(id) ON DELETE CASCADE,
|
||
|
|
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
||
|
|
allowed_actions JSONB,
|
||
|
|
created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_disposition_routes_from_dept ON disposition_routes(from_department_id);
|
||
|
|
|
||
|
|
-- Prevent duplicate active routes from -> to
|
||
|
|
CREATE UNIQUE INDEX IF NOT EXISTS uq_disposition_routes_active
|
||
|
|
ON disposition_routes(from_department_id, to_department_id)
|
||
|
|
WHERE is_active = TRUE;
|
||
|
|
|
||
|
|
CREATE TRIGGER trg_disposition_routes_updated_at
|
||
|
|
BEFORE UPDATE ON disposition_routes
|
||
|
|
FOR EACH ROW EXECUTE FUNCTION set_updated_at();
|
||
|
|
|
||
|
|
COMMIT;
|