mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-05-31 03:34:18 +00:00
Update davical.sql to 1.2.10.
This commit is contained in:
parent
2dfd7e98ca
commit
05d42557d7
@ -1253,3 +1253,29 @@ END;
|
|||||||
$$ LANGUAGE plpgsql;
|
$$ LANGUAGE plpgsql;
|
||||||
CREATE TRIGGER alarm_changed AFTER UPDATE ON calendar_alarm
|
CREATE TRIGGER alarm_changed AFTER UPDATE ON calendar_alarm
|
||||||
FOR EACH ROW EXECUTE PROCEDURE alarm_changed();
|
FOR EACH ROW EXECUTE PROCEDURE alarm_changed();
|
||||||
|
|
||||||
|
CREATE or REPLACE FUNCTION real_path_exists( TEXT ) RETURNS BOOLEAN AS $$
|
||||||
|
DECLARE
|
||||||
|
in_path ALIAS FOR $1;
|
||||||
|
tmp BOOLEAN;
|
||||||
|
BEGIN
|
||||||
|
IF in_path = '/' THEN
|
||||||
|
RETURN TRUE;
|
||||||
|
END IF;
|
||||||
|
IF in_path ~ '^/[^/]+/$' THEN
|
||||||
|
SELECT TRUE INTO tmp FROM usr WHERE username = substring( in_path from 2 for length(in_path) - 2);
|
||||||
|
IF FOUND THEN
|
||||||
|
RETURN TRUE;
|
||||||
|
END IF;
|
||||||
|
ELSE
|
||||||
|
IF in_path ~ '^/.*/$' THEN
|
||||||
|
SELECT TRUE INTO tmp FROM collection WHERE dav_name = in_path;
|
||||||
|
IF FOUND THEN
|
||||||
|
RETURN TRUE;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
RETURN FALSE;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql ;
|
||||||
|
|
||||||
@ -100,6 +100,7 @@ CREATE TABLE collection (
|
|||||||
UNIQUE(user_no,dav_name)
|
UNIQUE(user_no,dav_name)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
ALTER TABLE collection ADD CONSTRAINT unique_path UNIQUE (dav_name);
|
||||||
|
|
||||||
-- The main event. Where we store the things the calendar throws at us.
|
-- The main event. Where we store the things the calendar throws at us.
|
||||||
CREATE TABLE caldav_data (
|
CREATE TABLE caldav_data (
|
||||||
@ -147,7 +148,9 @@ CREATE TABLE calendar_item (
|
|||||||
completed TIMESTAMP WITH TIME ZONE,
|
completed TIMESTAMP WITH TIME ZONE,
|
||||||
dav_id INT8 UNIQUE,
|
dav_id INT8 UNIQUE,
|
||||||
collection_id INT8 REFERENCES collection(collection_id) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE,
|
collection_id INT8 REFERENCES collection(collection_id) ON UPDATE CASCADE ON DELETE CASCADE DEFERRABLE,
|
||||||
|
first_instance_start TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL,
|
||||||
|
last_instance_end TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL,
|
||||||
|
|
||||||
-- Cascade updates / deletes from the caldav_data table
|
-- Cascade updates / deletes from the caldav_data table
|
||||||
CONSTRAINT caldav_exists FOREIGN KEY ( user_no, dav_name )
|
CONSTRAINT caldav_exists FOREIGN KEY ( user_no, dav_name )
|
||||||
REFERENCES caldav_data ( user_no, dav_name )
|
REFERENCES caldav_data ( user_no, dav_name )
|
||||||
@ -264,6 +267,7 @@ CREATE TABLE principal (
|
|||||||
default_privileges BIT(24)
|
default_privileges BIT(24)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
ALTER TABLE principal ADD CONSTRAINT unique_user UNIQUE (user_no);
|
||||||
|
|
||||||
|
|
||||||
-- Allowing identification of group members.
|
-- Allowing identification of group members.
|
||||||
@ -322,8 +326,8 @@ CREATE TABLE dav_binding (
|
|||||||
parent_container TEXT NOT NULL,
|
parent_container TEXT NOT NULL,
|
||||||
dav_name TEXT UNIQUE NOT NULL,
|
dav_name TEXT UNIQUE NOT NULL,
|
||||||
dav_displayname TEXT,
|
dav_displayname TEXT,
|
||||||
external_url TEXT,
|
external_url TEXT,
|
||||||
type TEXT
|
type TEXT
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@ -395,4 +399,33 @@ CREATE TABLE calendar_attendee (
|
|||||||
PRIMARY KEY ( dav_id, attendee )
|
PRIMARY KEY ( dav_id, attendee )
|
||||||
);
|
);
|
||||||
|
|
||||||
SELECT new_db_revision(1,2,9, 'Septembre' );
|
|
||||||
|
CREATE or REPLACE FUNCTION real_path_exists( TEXT ) RETURNS BOOLEAN AS $$
|
||||||
|
DECLARE
|
||||||
|
in_path ALIAS FOR $1;
|
||||||
|
tmp BOOLEAN;
|
||||||
|
BEGIN
|
||||||
|
IF in_path = '/' THEN
|
||||||
|
RETURN TRUE;
|
||||||
|
END IF;
|
||||||
|
IF in_path ~ '^/[^/]+/$' THEN
|
||||||
|
SELECT TRUE INTO tmp FROM usr WHERE username = substring( in_path from 2 for length(in_path) - 2);
|
||||||
|
IF FOUND THEN
|
||||||
|
RETURN TRUE;
|
||||||
|
END IF;
|
||||||
|
ELSE
|
||||||
|
IF in_path ~ '^/.*/$' THEN
|
||||||
|
SELECT TRUE INTO tmp FROM collection WHERE dav_name = in_path;
|
||||||
|
IF FOUND THEN
|
||||||
|
RETURN TRUE;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
RETURN FALSE;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql ;
|
||||||
|
|
||||||
|
ALTER TABLE dav_binding ADD CONSTRAINT "dav_name_does_not_exist"
|
||||||
|
CHECK (NOT real_path_exists(dav_name));
|
||||||
|
|
||||||
|
SELECT new_db_revision(1,2,10, 'Octobre' );
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user