| 188 | | CREATE TABLE content |
| 189 | | ( |
| 190 | | content_id text NOT NULL PRIMARY KEY, |
| 191 | | content_type text NOT NULL CONSTRAINT content_type_not_empty_string CHECK (content_type != ''), |
| 192 | | title text REFERENCES content ON DELETE RESTRICT ON UPDATE CASCADE, |
| 193 | | description text REFERENCES content ON DELETE RESTRICT ON UPDATE CASCADE, |
| 194 | | project_info text REFERENCES content ON DELETE RESTRICT ON UPDATE CASCADE, |
| 195 | | sponsor_info text REFERENCES content ON DELETE RESTRICT ON UPDATE CASCADE, |
| 196 | | creation_timestamp timestamp DEFAULT now() |
| 197 | | ); |
| 198 | | |
| 199 | | CREATE TABLE content_has_owners |
| 200 | | ( |
| 201 | | content_id text NOT NULL REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| 202 | | user_id text NOT NULL REFERENCES users ON DELETE CASCADE ON UPDATE CASCADE, |
| 203 | | is_author bool NOT NULL, |
| 204 | | owner_since timestamp DEFAULT now(), |
| 205 | | PRIMARY KEY (content_id, user_id) |
| 206 | | ); |
| 207 | | |
| 208 | | CREATE TABLE langstring_entries ( |
| 209 | | langstring_entries_id text NOT NULL PRIMARY KEY, |
| 210 | | langstrings_id text REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| 211 | | locales_id text REFERENCES locales ON DELETE RESTRICT ON UPDATE CASCADE, |
| 212 | | value text DEFAULT '' |
| 213 | | ); |
| 214 | | |
| 215 | | CREATE TABLE content_group ( |
| 216 | | content_group_id text NOT NULL PRIMARY KEY REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| 217 | | is_artistic_content bool NOT NULL DEFAULT FALSE, |
| 218 | | is_locative_content bool NOT NULL DEFAULT FALSE, |
| 219 | | content_selection_mode text |
| 220 | | ); |
| 221 | | |
| 222 | | CREATE TABLE content_group_element ( |
| 223 | | content_group_element_id text NOT NULL PRIMARY KEY REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| 224 | | content_group_id text NOT NULL REFERENCES content_group ON DELETE CASCADE ON UPDATE CASCADE, |
| 225 | | display_order integer DEFAULT '1', |
| 226 | | displayed_content_id text REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| 227 | | force_only_allowed_node bool |
| 228 | | ); |
| 229 | | CREATE INDEX idx_content_group_element_content_group_id ON content_group_element (content_group_id); |
| 230 | | |
| 231 | | CREATE TABLE content_group_element_has_allowed_nodes |
| 232 | | ( |
| 233 | | content_group_element_id text NOT NULL REFERENCES content_group_element ON DELETE CASCADE ON UPDATE CASCADE, |
| 234 | | node_id text NOT NULL REFERENCES nodes ON DELETE CASCADE ON UPDATE CASCADE, |
| 235 | | allowed_since timestamp DEFAULT now(), |
| 236 | | PRIMARY KEY (content_group_element_id, node_id) |
| 237 | | ); |
| 238 | | |
| 239 | | CREATE TABLE content_group_element_portal_display_log ( |
| 240 | | user_id text NOT NULL REFERENCES users ON DELETE CASCADE ON UPDATE CASCADE, |
| 241 | | content_group_element_id text NOT NULL REFERENCES content_group_element ON DELETE CASCADE ON UPDATE CASCADE, |
| 242 | | display_timestamp timestamp NOT NULL DEFAULT now(), |
| 243 | | node_id text REFERENCES nodes ON DELETE CASCADE ON UPDATE CASCADE, |
| 244 | | PRIMARY KEY (user_id,content_group_element_id, display_timestamp) |
| 245 | | ); |
| 246 | | |
| 247 | | CREATE TABLE user_has_content ( |
| 248 | | user_id text NOT NULL REFERENCES users ON DELETE CASCADE ON UPDATE CASCADE, |
| 249 | | content_id text NOT NULL REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| 250 | | subscribe_timestamp timestamp NOT NULL DEFAULT now(), |
| 251 | | PRIMARY KEY (user_id,content_id) |
| 252 | | ); |
| 253 | | |
| 254 | | CREATE TABLE node_has_content ( |
| 255 | | node_id text NOT NULL REFERENCES nodes ON DELETE CASCADE ON UPDATE CASCADE, |
| 256 | | content_id text NOT NULL REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| 257 | | subscribe_timestamp timestamp NOT NULL DEFAULT now(), |
| 258 | | PRIMARY KEY (node_id,content_id) |
| 259 | | ); |
| 260 | | |
| 261 | | CREATE TABLE network_has_content ( |
| 262 | | network_id text NOT NULL, |
| 263 | | content_id text NOT NULL REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| 264 | | subscribe_timestamp timestamp NOT NULL DEFAULT now(), |
| 265 | | PRIMARY KEY (network_id,content_id) |
| 266 | | );"; |
| | 188 | CREATE TABLE content |
| | 189 | ( |
| | 190 | content_id text NOT NULL PRIMARY KEY, |
| | 191 | content_type text NOT NULL CONSTRAINT content_type_not_empty_string CHECK (content_type != ''), |
| | 192 | title text REFERENCES content ON DELETE RESTRICT ON UPDATE CASCADE, |
| | 193 | description text REFERENCES content ON DELETE RESTRICT ON UPDATE CASCADE, |
| | 194 | project_info text REFERENCES content ON DELETE RESTRICT ON UPDATE CASCADE, |
| | 195 | sponsor_info text REFERENCES content ON DELETE RESTRICT ON UPDATE CASCADE, |
| | 196 | creation_timestamp timestamp DEFAULT now() |
| | 197 | ); |
| | 198 | |
| | 199 | CREATE TABLE content_has_owners |
| | 200 | ( |
| | 201 | content_id text NOT NULL REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| | 202 | user_id text NOT NULL REFERENCES users ON DELETE CASCADE ON UPDATE CASCADE, |
| | 203 | is_author bool NOT NULL, |
| | 204 | owner_since timestamp DEFAULT now(), |
| | 205 | PRIMARY KEY (content_id, user_id) |
| | 206 | ); |
| | 207 | |
| | 208 | CREATE TABLE langstring_entries ( |
| | 209 | langstring_entries_id text NOT NULL PRIMARY KEY, |
| | 210 | langstrings_id text REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| | 211 | locales_id text REFERENCES locales ON DELETE RESTRICT ON UPDATE CASCADE, |
| | 212 | value text DEFAULT '' |
| | 213 | ); |
| | 214 | |
| | 215 | CREATE TABLE content_group ( |
| | 216 | content_group_id text NOT NULL PRIMARY KEY REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| | 217 | is_artistic_content bool NOT NULL DEFAULT FALSE, |
| | 218 | is_locative_content bool NOT NULL DEFAULT FALSE, |
| | 219 | content_selection_mode text |
| | 220 | ); |
| | 221 | |
| | 222 | CREATE TABLE content_group_element ( |
| | 223 | content_group_element_id text NOT NULL PRIMARY KEY REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| | 224 | content_group_id text NOT NULL REFERENCES content_group ON DELETE CASCADE ON UPDATE CASCADE, |
| | 225 | display_order integer DEFAULT '1', |
| | 226 | displayed_content_id text REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| | 227 | force_only_allowed_node bool |
| | 228 | ); |
| | 229 | CREATE INDEX idx_content_group_element_content_group_id ON content_group_element (content_group_id); |
| | 230 | |
| | 231 | CREATE TABLE content_group_element_has_allowed_nodes |
| | 232 | ( |
| | 233 | content_group_element_id text NOT NULL REFERENCES content_group_element ON DELETE CASCADE ON UPDATE CASCADE, |
| | 234 | node_id text NOT NULL REFERENCES nodes ON DELETE CASCADE ON UPDATE CASCADE, |
| | 235 | allowed_since timestamp DEFAULT now(), |
| | 236 | PRIMARY KEY (content_group_element_id, node_id) |
| | 237 | ); |
| | 238 | |
| | 239 | CREATE TABLE content_group_element_portal_display_log ( |
| | 240 | user_id text NOT NULL REFERENCES users ON DELETE CASCADE ON UPDATE CASCADE, |
| | 241 | content_group_element_id text NOT NULL REFERENCES content_group_element ON DELETE CASCADE ON UPDATE CASCADE, |
| | 242 | display_timestamp timestamp NOT NULL DEFAULT now(), |
| | 243 | node_id text REFERENCES nodes ON DELETE CASCADE ON UPDATE CASCADE, |
| | 244 | PRIMARY KEY (user_id,content_group_element_id, display_timestamp) |
| | 245 | ); |
| | 246 | |
| | 247 | CREATE TABLE user_has_content ( |
| | 248 | user_id text NOT NULL REFERENCES users ON DELETE CASCADE ON UPDATE CASCADE, |
| | 249 | content_id text NOT NULL REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| | 250 | subscribe_timestamp timestamp NOT NULL DEFAULT now(), |
| | 251 | PRIMARY KEY (user_id,content_id) |
| | 252 | ); |
| | 253 | |
| | 254 | CREATE TABLE node_has_content ( |
| | 255 | node_id text NOT NULL REFERENCES nodes ON DELETE CASCADE ON UPDATE CASCADE, |
| | 256 | content_id text NOT NULL REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| | 257 | subscribe_timestamp timestamp NOT NULL DEFAULT now(), |
| | 258 | PRIMARY KEY (node_id,content_id) |
| | 259 | ); |
| | 260 | |
| | 261 | CREATE TABLE network_has_content ( |
| | 262 | network_id text NOT NULL, |
| | 263 | content_id text NOT NULL REFERENCES content ON DELETE CASCADE ON UPDATE CASCADE, |
| | 264 | subscribe_timestamp timestamp NOT NULL DEFAULT now(), |
| | 265 | PRIMARY KEY (network_id,content_id) |
| | 266 | );"; |