From 899337a679105509078a41d78e7fce9927deb346 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Sun, 28 Feb 2010 11:35:52 +1300 Subject: [PATCH] Database changes which actually work, for the moment. --- dba/davical.sql | 35 ++++++++++++++++++++++++++++++++--- dba/patches/1.2.8.sql | 42 ++++++++++++++++++++++++++++++++++++------ 2 files changed, 68 insertions(+), 9 deletions(-) diff --git a/dba/davical.sql b/dba/davical.sql index 69709d8e..7c338918 100644 --- a/dba/davical.sql +++ b/dba/davical.sql @@ -304,11 +304,40 @@ CREATE INDEX sync_processing_index ON sync_changes( collection_id, dav_id, sync_ CREATE TABLE access_ticket ( ticket_id TEXT PRIMARY KEY, - is_collection BOOLEAN, + is_public BOOLEAN, privileges BIT(24), - target_id INT8, - displayname TEXT, + target_collection_id INT8 NOT NULL REFERENCES collection(collection_id) ON UPDATE CASCADE ON DELETE CASCADE, + target_resource_id INT8 REFERENCES caldav_data(dav_id) ON UPDATE CASCADE ON DELETE CASCADE, + dav_displayname TEXT, expires TIMESTAMP ); + +-- At this point we only support binding collections +CREATE TABLE dav_binding ( + bind_id INT8 DEFAULT nextval('dav_id_seq') PRIMARY KEY, + target_ticket_id TEXT REFERENCES access_ticket(ticket_id) ON UPDATE CASCADE ON DELETE CASCADE, + target_collection_id INT8 REFERENCES collection(collection_id) ON UPDATE CASCADE ON DELETE CASCADE, + dav_owner_id INT8 NOT NULL REFERENCES principal(principal_id) ON UPDATE CASCADE ON DELETE CASCADE, + parent_container TEXT, + dav_name TEXT, + dav_displayname TEXT +); + + +CREATE TABLE collection_mashup ( + mashup_id SERIAL PRIMARY KEY, + dav_owner_id INT8 NOT NULL REFERENCES principal(principal_id) ON UPDATE CASCADE ON DELETE CASCADE, + parent_container TEXT, + dav_name TEXT, + dav_displayname TEXT +); + +CREATE TABLE mashup_member ( + mashup_id INT8 NOT NULL REFERENCES collection_mashup(mashup_id) ON UPDATE CASCADE ON DELETE CASCADE, + target_ticket_id TEXT REFERENCES access_ticket(ticket_id) ON UPDATE CASCADE ON DELETE CASCADE, + target_collection_id INT8 REFERENCES collection(collection_id) ON UPDATE CASCADE ON DELETE CASCADE, + member_colour TEXT +); + SELECT new_db_revision(1,2,8, 'Août' ); diff --git a/dba/patches/1.2.8.sql b/dba/patches/1.2.8.sql index e19187f6..8b54b8f8 100644 --- a/dba/patches/1.2.8.sql +++ b/dba/patches/1.2.8.sql @@ -1,21 +1,51 @@ --- This database update adds support for the draft webdav-sync specification --- as well as some initial support for addressbook collections which will --- be needed to support carddav. +-- This database update adds support for tickets to be handed out to grant +-- specific access to a collection or individual resource, as read-only or +-- read-write. A table is also added to manage WebDAV binding, in line +-- with http://tools.ietf.org/html/draft-ietf-webdav-bind. BEGIN; SELECT check_db_revision(1,2,7); CREATE TABLE access_ticket ( ticket_id TEXT PRIMARY KEY, - is_collection BOOLEAN, is_public BOOLEAN, privileges BIT(24), - target_id INT8, - displayname TEXT, + target_collection_id INT8 NOT NULL REFERENCES collection(collection_id) ON UPDATE CASCADE ON DELETE CASCADE, + target_resource_id INT8 REFERENCES caldav_data(dav_id) ON UPDATE CASCADE ON DELETE CASCADE, + dav_displayname TEXT, expires TIMESTAMP ); + +-- At this point we only support binding collections +CREATE TABLE dav_binding ( + bind_id INT8 DEFAULT nextval('dav_id_seq') PRIMARY KEY, + target_ticket_id TEXT REFERENCES access_ticket(ticket_id) ON UPDATE CASCADE ON DELETE CASCADE, + target_collection_id INT8 REFERENCES collection(collection_id) ON UPDATE CASCADE ON DELETE CASCADE, + dav_owner_id INT8 NOT NULL REFERENCES principal(principal_id) ON UPDATE CASCADE ON DELETE CASCADE, + parent_container TEXT, + dav_name TEXT, + dav_displayname TEXT +); + + +CREATE TABLE collection_mashup ( + mashup_id SERIAL PRIMARY KEY, + dav_owner_id INT8 NOT NULL REFERENCES principal(principal_id) ON UPDATE CASCADE ON DELETE CASCADE, + parent_container TEXT, + dav_name TEXT, + dav_displayname TEXT +); + +CREATE TABLE mashup_member ( + mashup_id INT8 NOT NULL REFERENCES collection_mashup(mashup_id) ON UPDATE CASCADE ON DELETE CASCADE, + target_ticket_id TEXT REFERENCES access_ticket(ticket_id) ON UPDATE CASCADE ON DELETE CASCADE, + target_collection_id INT8 REFERENCES collection(collection_id) ON UPDATE CASCADE ON DELETE CASCADE, + member_colour TEXT +); + + SELECT new_db_revision(1,2,8, 'Août' ); COMMIT;