(*) full support for database caching, including SliceAttributes
[plcapi.git] / planetlab4.sql
index 82636c2..236a54a 100644 (file)
@@ -9,7 +9,7 @@
 --
 -- Copyright (C) 2006 The Trustees of Princeton University
 --
--- $Id: planetlab4.sql,v 1.42 2006/11/21 10:57:00 thierry Exp $
+-- $Id: planetlab4.sql,v 1.46 2006/11/27 12:18:12 thierry Exp $
 --
 
 --------------------------------------------------------------------------------
@@ -79,7 +79,9 @@ CREATE TABLE persons (
 
     -- Timestamps
     date_created timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    last_updated timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
+    last_updated timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    
+    peer_id integer REFERENCES peers -- From which peer 
 ) WITH OIDS;
 CREATE INDEX persons_email_idx ON persons (email) WHERE deleted IS false;
 
@@ -106,7 +108,9 @@ CREATE TABLE sites (
 
     -- Timestamps
     date_created timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
-    last_updated timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP
+    last_updated timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
+
+    peer_id integer REFERENCES peers -- From which peer 
 ) WITH OIDS;
 CREATE INDEX sites_login_base_idx ON sites (login_base) WHERE deleted IS false;
 
@@ -635,7 +639,9 @@ CREATE TABLE slice_attribute_types (
     attribute_type_id serial PRIMARY KEY, -- Attribute type identifier
     name text UNIQUE NOT NULL, -- Attribute name
     description text, -- Attribute description
-    min_role_id integer REFERENCES roles DEFAULT 10 -- If set, minimum (least powerful) role that can set or change this attribute
+    min_role_id integer REFERENCES roles DEFAULT 10, -- If set, minimum (least powerful) role that can set or change this attribute
+    peer_id integer REFERENCES peers -- From which peer 
 ) WITH OIDS;
 
 -- Slice/sliver attributes
@@ -644,7 +650,9 @@ CREATE TABLE slice_attribute (
     slice_id integer REFERENCES slices NOT NULL, -- Slice identifier
     node_id integer REFERENCES nodes, -- Sliver attribute if set
     attribute_type_id integer REFERENCES slice_attribute_types NOT NULL, -- Attribute type identifier
-    value text
+    value text,
+
+    peer_id integer REFERENCES peers -- From which peer 
 ) WITH OIDS;
 CREATE INDEX slice_attribute_slice_id_idx ON slice_attribute (slice_id);
 CREATE INDEX slice_attribute_node_id_idx ON slice_attribute (node_id);
@@ -798,6 +806,7 @@ persons.title,
 persons.phone,
 persons.url,
 persons.bio,
+persons.peer_id,
 CAST(date_part('epoch', persons.date_created) AS bigint) AS date_created,
 CAST(date_part('epoch', persons.last_updated) AS bigint) AS last_updated,
 COALESCE(person_roles.role_ids, '{}') AS role_ids,
@@ -910,6 +919,7 @@ sites.max_slivers,
 sites.latitude,
 sites.longitude,
 sites.url,
+sites.peer_id,
 CAST(date_part('epoch', sites.date_created) AS bigint) AS date_created,
 CAST(date_part('epoch', sites.last_updated) AS bigint) AS last_updated,
 COALESCE(site_persons.person_ids, '{}') AS person_ids,
@@ -971,7 +981,8 @@ slice_attribute_types.attribute_type_id,
 slice_attribute_types.name,
 slice_attribute_types.description,
 slice_attribute_types.min_role_id,
-slice_attribute.value
+slice_attribute.value,
+slice_attribute.peer_id
 FROM slice_attribute
 INNER JOIN slice_attribute_types USING (attribute_type_id);