Mercurial > libervia-pubsub
annotate db/pubsub.sql @ 332:31cbd8b9fa7f
pgsql: node creation now return error.NodeExists in case of unique violation, and InvalidConfigurationOption else
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 03 Apr 2017 00:24:34 +0200 |
parents | 98409ef42c94 |
children | 4d4575911060 |
rev | line source |
---|---|
206
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
1 CREATE TABLE entities ( |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
2 entity_id serial PRIMARY KEY, |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
3 jid text NOT NULL UNIQUE |
87 | 4 ); |
5 | |
206
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
6 CREATE TABLE nodes ( |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
7 node_id serial PRIMARY KEY, |
294
df1edebb0466
PEP implementation, draft (huge patch sorry):
Goffi <goffi@goffi.org>
parents:
260
diff
changeset
|
8 node text NOT NULL, |
df1edebb0466
PEP implementation, draft (huge patch sorry):
Goffi <goffi@goffi.org>
parents:
260
diff
changeset
|
9 pep text, |
206
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
10 node_type text NOT NULL DEFAULT 'leaf' |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
11 CHECK (node_type IN ('leaf', 'collection')), |
240
70c8bb90d75f
added access_model to config, default to 'open'
Goffi <goffi@goffi.org>
parents:
206
diff
changeset
|
12 access_model text NOT NULL DEFAULT 'open' |
329 | 13 CHECK (access_model IN ('open', 'publisher-roster', 'whitelist', 'publish-only', 'self-publisher')), |
206
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
14 persist_items boolean, |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
15 deliver_payloads boolean NOT NULL DEFAULT TRUE, |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
16 send_last_published_item text NOT NULL DEFAULT 'on_sub' |
260 | 17 CHECK (send_last_published_item IN ('never', 'on_sub')), |
18 publish_model text NOT NULL DEFAULT 'publishers' | |
295
bed30cef11a8
fixed bad queries in pubsub.sql file
Goffi <goffi@goffi.org>
parents:
294
diff
changeset
|
19 CHECK (publish_model IN ('publishers', 'subscribers', 'open')) |
87 | 20 ); |
21 | |
294
df1edebb0466
PEP implementation, draft (huge patch sorry):
Goffi <goffi@goffi.org>
parents:
260
diff
changeset
|
22 /* we need 2 partial indexes to manage NULL value for PEP */ |
df1edebb0466
PEP implementation, draft (huge patch sorry):
Goffi <goffi@goffi.org>
parents:
260
diff
changeset
|
23 CREATE UNIQUE INDEX nodes_node_pep_key_not_null ON nodes(node, pep) WHERE pep IS NOT NULL; |
df1edebb0466
PEP implementation, draft (huge patch sorry):
Goffi <goffi@goffi.org>
parents:
260
diff
changeset
|
24 CREATE UNIQUE INDEX nodes_node_pep_key_null ON nodes(node) WHERE pep IS NULL; |
df1edebb0466
PEP implementation, draft (huge patch sorry):
Goffi <goffi@goffi.org>
parents:
260
diff
changeset
|
25 |
206
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
26 INSERT INTO nodes (node, node_type) values ('', 'collection'); |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
27 |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
28 CREATE TABLE affiliations ( |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
29 affiliation_id serial PRIMARY KEY, |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
30 entity_id integer NOT NULL REFERENCES entities ON DELETE CASCADE, |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
31 node_id integer NOT NULL references nodes ON DELETE CASCADE, |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
32 affiliation text NOT NULL |
329 | 33 CHECK (affiliation IN ('outcast', 'member', 'publisher', 'owner')), |
206
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
34 UNIQUE (entity_id, node_id) |
87 | 35 ); |
36 | |
243
42048e37699e
added experimental roster access_model (use remote_roster)
Goffi <goffi@goffi.org>
parents:
240
diff
changeset
|
37 CREATE TABLE node_groups_authorized ( |
42048e37699e
added experimental roster access_model (use remote_roster)
Goffi <goffi@goffi.org>
parents:
240
diff
changeset
|
38 node_groups_authorized_id serial PRIMARY KEY, |
42048e37699e
added experimental roster access_model (use remote_roster)
Goffi <goffi@goffi.org>
parents:
240
diff
changeset
|
39 node_id integer NOT NULL references nodes ON DELETE CASCADE, |
42048e37699e
added experimental roster access_model (use remote_roster)
Goffi <goffi@goffi.org>
parents:
240
diff
changeset
|
40 groupname text NOT NULL, |
42048e37699e
added experimental roster access_model (use remote_roster)
Goffi <goffi@goffi.org>
parents:
240
diff
changeset
|
41 UNIQUE (node_id,groupname) |
42048e37699e
added experimental roster access_model (use remote_roster)
Goffi <goffi@goffi.org>
parents:
240
diff
changeset
|
42 ); |
42048e37699e
added experimental roster access_model (use remote_roster)
Goffi <goffi@goffi.org>
parents:
240
diff
changeset
|
43 |
206
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
44 CREATE TABLE subscriptions ( |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
45 subscription_id serial PRIMARY KEY, |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
46 entity_id integer NOT NULL REFERENCES entities ON DELETE CASCADE, |
87 | 47 resource text, |
206
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
48 node_id integer NOT NULL REFERENCES nodes ON delete CASCADE, |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
49 state text NOT NULL DEFAULT 'subscribed' |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
50 CHECK (state IN ('subscribed', 'pending', 'unconfigured')), |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
51 subscription_type text |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
52 CHECK (subscription_type IN (NULL, 'items', 'nodes')), |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
53 subscription_depth text |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
54 CHECK (subscription_depth IN (NULL, '1', 'all')), |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
55 UNIQUE (entity_id, resource, node_id)); |
87 | 56 |
206
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
57 CREATE TABLE items ( |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
58 item_id serial PRIMARY KEY, |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
59 node_id integer NOT NULL REFERENCES nodes ON DELETE CASCADE, |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
60 item text NOT NULL, |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
61 publisher text NOT NULL, |
87 | 62 data text, |
248
50f6ee966da8
item are gotten according to item's access model in getItems
Goffi <goffi@goffi.org>
parents:
244
diff
changeset
|
63 access_model text NOT NULL DEFAULT 'open' |
329 | 64 CHECK (access_model IN ('open', 'publisher-roster', 'whitelist')), |
206
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
65 date timestamp with time zone NOT NULL DEFAULT now(), |
274a45d2a5ab
Implement root collection that includes all leaf nodes.
Ralph Meijer <ralphm@ik.nu>
parents:
188
diff
changeset
|
66 UNIQUE (node_id, item) |
87 | 67 ); |
244 | 68 |
69 CREATE TABLE item_groups_authorized ( | |
70 item_groups_authorized_id serial PRIMARY KEY, | |
71 item_id integer NOT NULL references items ON DELETE CASCADE, | |
72 groupname text NOT NULL, | |
73 UNIQUE (item_id,groupname) | |
74 ); | |
75 | |
329 | 76 CREATE TABLE item_jids_authorized ( |
77 item_jids_authorized_id serial PRIMARY KEY, | |
78 item_id integer NOT NULL references items ON DELETE CASCADE, | |
79 jid text NOT NULL, | |
80 UNIQUE (item_id,jid) | |
81 ); | |
82 | |
83 CREATE TABLE item_languages ( | |
84 item_languages_id serial PRIMARY KEY, | |
85 item_id integer NOT NULL references items ON DELETE CASCADE, | |
86 language text NOT NULL, | |
87 UNIQUE (item_id,language) | |
88 ); | |
89 | |
301
05c875a13a62
categories are now stored in a dedicated table if item contain an atom entry:
Goffi <goffi@goffi.org>
parents:
295
diff
changeset
|
90 CREATE TABLE item_categories ( |
05c875a13a62
categories are now stored in a dedicated table if item contain an atom entry:
Goffi <goffi@goffi.org>
parents:
295
diff
changeset
|
91 item_categories_id serial PRIMARY KEY, |
05c875a13a62
categories are now stored in a dedicated table if item contain an atom entry:
Goffi <goffi@goffi.org>
parents:
295
diff
changeset
|
92 item_id integer NOT NULL references items ON DELETE CASCADE, |
05c875a13a62
categories are now stored in a dedicated table if item contain an atom entry:
Goffi <goffi@goffi.org>
parents:
295
diff
changeset
|
93 category text NOT NULL, |
05c875a13a62
categories are now stored in a dedicated table if item contain an atom entry:
Goffi <goffi@goffi.org>
parents:
295
diff
changeset
|
94 UNIQUE (item_id,category) |
05c875a13a62
categories are now stored in a dedicated table if item contain an atom entry:
Goffi <goffi@goffi.org>
parents:
295
diff
changeset
|
95 ); |
05c875a13a62
categories are now stored in a dedicated table if item contain an atom entry:
Goffi <goffi@goffi.org>
parents:
295
diff
changeset
|
96 |
294
df1edebb0466
PEP implementation, draft (huge patch sorry):
Goffi <goffi@goffi.org>
parents:
260
diff
changeset
|
97 CREATE TABLE metadata ( |
df1edebb0466
PEP implementation, draft (huge patch sorry):
Goffi <goffi@goffi.org>
parents:
260
diff
changeset
|
98 key text PRIMARY KEY, |
df1edebb0466
PEP implementation, draft (huge patch sorry):
Goffi <goffi@goffi.org>
parents:
260
diff
changeset
|
99 value text |
df1edebb0466
PEP implementation, draft (huge patch sorry):
Goffi <goffi@goffi.org>
parents:
260
diff
changeset
|
100 ); |
df1edebb0466
PEP implementation, draft (huge patch sorry):
Goffi <goffi@goffi.org>
parents:
260
diff
changeset
|
101 |
329 | 102 INSERT INTO metadata VALUES ('version', '2'); |