Beginning an unwrapped upgrade script
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / XXXX.schema.custom_toolbars.sql
1
2 CREATE TABLE actor.toolbar (
3     id          BIGSERIAL   PRIMARY KEY,
4     ws          INT         REFERENCES actor.workstation (id) ON DELETE CASCADE,
5     org         INT         REFERENCES actor.org_unit (id) ON DELETE CASCADE,
6     usr         INT         REFERENCES actor.usr (id) ON DELETE CASCADE,
7     label       TEXT        NOT NULL,
8     layout      TEXT        NOT NULL,
9        CONSTRAINT label_once_per_ws UNIQUE (ws, label) WHERE ws IS NOT NULL,
10        CONSTRAINT label_once_per_org UNIQUE (org, label) WHERE org IS NOT NULL,
11        CONSTRAINT label_once_per_usr UNIQUE (usr, label) WHERE usr IS NOT NULL,
12     CONSTRAINT only_one_type CHECK (
13         (ws IS NOT NULL AND COALESCE(org,usr) IS NULL) OR
14         (org IS NOT NULL AND COALESCE(ws,usr) IS NULL) OR
15         (usr IS NOT NULL AND COALESCE(org,ws) IS NULL)
16     ),
17     CONSTRAINT layout_must_be_json CHECK ( is_json(layout) )
18 );
19