mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-06-08 04:50:55 +00:00
Removed these outdated files.
This commit is contained in:
parent
91f5ea62e0
commit
1c965d4cdf
@ -1,96 +0,0 @@
|
||||
-- Tables needed for AWL Libraries
|
||||
|
||||
BEGIN;
|
||||
|
||||
CREATE TABLE supported_locales (
|
||||
locale TEXT PRIMARY KEY,
|
||||
locale_name_en TEXT,
|
||||
locale_name_locale TEXT
|
||||
);
|
||||
|
||||
-- This is the table of users for the system
|
||||
CREATE TABLE usr (
|
||||
user_no SERIAL PRIMARY KEY,
|
||||
active BOOLEAN DEFAULT TRUE,
|
||||
email_ok TIMESTAMPTZ,
|
||||
joined TIMESTAMPTZ DEFAULT current_timestamp,
|
||||
updated TIMESTAMPTZ,
|
||||
last_used TIMESTAMPTZ,
|
||||
username TEXT NOT NULL, -- Note UNIQUE INDEX below constains case-insensitive uniqueness
|
||||
password TEXT,
|
||||
fullname TEXT,
|
||||
email TEXT,
|
||||
config_data TEXT,
|
||||
date_format_type TEXT DEFAULT 'E', -- default to english date format dd/mm/yyyy
|
||||
locale TEXT
|
||||
);
|
||||
CREATE FUNCTION max_usr() RETURNS INT4 AS 'SELECT max(user_no) FROM usr' LANGUAGE 'sql';
|
||||
CREATE UNIQUE INDEX usr_sk1_unique_username ON usr ( lower(username) );
|
||||
|
||||
CREATE TABLE usr_setting (
|
||||
user_no INT4 REFERENCES usr ( user_no ),
|
||||
setting_name TEXT,
|
||||
setting_value TEXT,
|
||||
PRIMARY KEY ( user_no, setting_name )
|
||||
);
|
||||
|
||||
CREATE FUNCTION get_usr_setting(INT4,TEXT)
|
||||
RETURNS TEXT
|
||||
AS 'SELECT setting_value FROM usr_setting
|
||||
WHERE usr_setting.user_no = $1
|
||||
AND usr_setting.setting_name = $2 ' LANGUAGE 'sql';
|
||||
|
||||
CREATE TABLE roles (
|
||||
role_no SERIAL PRIMARY KEY,
|
||||
role_name TEXT
|
||||
);
|
||||
CREATE FUNCTION max_roles() RETURNS INT4 AS 'SELECT max(role_no) FROM roles' LANGUAGE 'sql';
|
||||
|
||||
|
||||
CREATE TABLE role_member (
|
||||
role_no INT4 REFERENCES roles ( role_no ),
|
||||
user_no INT4 REFERENCES usr ( user_no )
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE session (
|
||||
session_id SERIAL PRIMARY KEY,
|
||||
user_no INT4 REFERENCES usr ( user_no ),
|
||||
session_start TIMESTAMPTZ DEFAULT current_timestamp,
|
||||
session_end TIMESTAMPTZ DEFAULT current_timestamp,
|
||||
session_key TEXT,
|
||||
session_config TEXT
|
||||
);
|
||||
CREATE FUNCTION max_session() RETURNS INT4 AS 'SELECT max(session_id) FROM session' LANGUAGE 'sql';
|
||||
|
||||
CREATE TABLE tmp_password (
|
||||
user_no INT4 REFERENCES usr ( user_no ),
|
||||
password TEXT,
|
||||
valid_until TIMESTAMPTZ DEFAULT (current_timestamp + '1 day'::interval)
|
||||
);
|
||||
COMMIT;
|
||||
|
||||
BEGIN;
|
||||
GRANT SELECT,INSERT,UPDATE ON
|
||||
usr
|
||||
, usr_setting
|
||||
, roles
|
||||
, role_member
|
||||
, session
|
||||
, tmp_password
|
||||
TO general;
|
||||
GRANT SELECT,UPDATE ON
|
||||
usr_user_no_seq
|
||||
, session_session_id_seq
|
||||
TO general;
|
||||
|
||||
GRANT SELECT ON
|
||||
supported_locales
|
||||
TO general;
|
||||
|
||||
GRANT DELETE ON
|
||||
tmp_password
|
||||
, role_member
|
||||
TO general;
|
||||
|
||||
COMMIT;
|
||||
@ -1,135 +0,0 @@
|
||||
-- Really Simple CalDAV Store - Database Schema
|
||||
--
|
||||
|
||||
-- Use the usr, group and schema management stufffrom libawl-php
|
||||
\i awl-tables.sql
|
||||
\i schema-management.sql
|
||||
|
||||
-- The main event. Where we store the things the calendar throws at us.
|
||||
CREATE TABLE caldav_data (
|
||||
user_no INT references usr(user_no),
|
||||
dav_name TEXT,
|
||||
dav_etag TEXT,
|
||||
created TIMESTAMP WITH TIME ZONE,
|
||||
modified TIMESTAMP WITH TIME ZONE,
|
||||
caldav_data TEXT,
|
||||
caldav_type TEXT,
|
||||
logged_user INT references usr(user_no),
|
||||
|
||||
PRIMARY KEY ( user_no, dav_name )
|
||||
);
|
||||
|
||||
GRANT SELECT,INSERT,UPDATE,DELETE ON caldav_data TO general;
|
||||
|
||||
-- Not particularly needed, perhaps, except as a way to collect
|
||||
-- a bunch of valid iCalendar time zone specifications... :-)
|
||||
CREATE TABLE time_zone (
|
||||
tz_id TEXT PRIMARY KEY,
|
||||
tz_locn TEXT,
|
||||
tz_spec TEXT
|
||||
);
|
||||
GRANT SELECT,INSERT ON time_zone TO general;
|
||||
|
||||
-- The parsed calendar item. Here we have pulled those events/todos/journals apart somewhat.
|
||||
CREATE TABLE calendar_item (
|
||||
user_no INT references usr(user_no),
|
||||
dav_name TEXT,
|
||||
dav_etag TEXT,
|
||||
|
||||
-- Extracted vEvent/vTodo data
|
||||
uid TEXT,
|
||||
created TIMESTAMP,
|
||||
last_modified TIMESTAMP,
|
||||
dtstamp TIMESTAMP,
|
||||
dtstart TIMESTAMP WITH TIME ZONE,
|
||||
dtend TIMESTAMP WITH TIME ZONE,
|
||||
due TIMESTAMP WITH TIME ZONE,
|
||||
summary TEXT,
|
||||
location TEXT,
|
||||
description TEXT,
|
||||
priority INT,
|
||||
class TEXT,
|
||||
transp TEXT,
|
||||
rrule TEXT,
|
||||
url TEXT,
|
||||
percent_complete NUMERIC(7,2),
|
||||
tz_id TEXT REFERENCES time_zone( tz_id ),
|
||||
status TEXT,
|
||||
|
||||
-- Cascade updates / deletes from the caldav_data table
|
||||
CONSTRAINT caldav_exists FOREIGN KEY ( user_no, dav_name )
|
||||
REFERENCES caldav_data ( user_no, dav_name )
|
||||
MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE
|
||||
);
|
||||
|
||||
GRANT SELECT,INSERT,UPDATE,DELETE ON calendar_item TO general;
|
||||
|
||||
|
||||
-- Something that can look like a filesystem hierarchy where we store stuff
|
||||
CREATE TABLE collection (
|
||||
user_no INT references usr(user_no),
|
||||
parent_container TEXT,
|
||||
dav_name TEXT,
|
||||
dav_etag TEXT,
|
||||
dav_displayname TEXT,
|
||||
is_calendar BOOLEAN,
|
||||
created TIMESTAMP WITH TIME ZONE,
|
||||
modified TIMESTAMP WITH TIME ZONE,
|
||||
|
||||
PRIMARY KEY ( user_no, dav_name )
|
||||
);
|
||||
|
||||
GRANT SELECT,INSERT,UPDATE,DELETE ON collection TO general;
|
||||
|
||||
-- Each user can be related to each other user. This mechanism can also
|
||||
-- be used to define groups of users, since some relationships are transitive.
|
||||
CREATE TABLE relationship_type (
|
||||
rt_id SERIAL PRIMARY KEY,
|
||||
rt_name TEXT,
|
||||
rt_togroup BOOLEAN,
|
||||
confers TEXT DEFAULT 'RW',
|
||||
rt_fromgroup BOOLEAN
|
||||
);
|
||||
|
||||
GRANT SELECT,INSERT,UPDATE,DELETE ON relationship_type TO general;
|
||||
GRANT SELECT,UPDATE ON relationship_type_rt_id_seq TO general;
|
||||
|
||||
CREATE TABLE relationship (
|
||||
from_user INT REFERENCES usr (user_no) ON UPDATE CASCADE,
|
||||
to_user INT REFERENCES usr (user_no) ON UPDATE CASCADE,
|
||||
rt_id INT REFERENCES relationship_type (rt_id) ON UPDATE CASCADE,
|
||||
|
||||
PRIMARY KEY ( from_user, to_user, rt_id )
|
||||
);
|
||||
|
||||
GRANT SELECT,INSERT,UPDATE,DELETE ON relationship TO general;
|
||||
|
||||
|
||||
CREATE TABLE locks (
|
||||
dav_name TEXT,
|
||||
opaquelocktoken TEXT UNIQUE NOT NULL,
|
||||
type TEXT,
|
||||
scope TEXT,
|
||||
depth INT,
|
||||
owner TEXT,
|
||||
timeout INTERVAL,
|
||||
start TIMESTAMP DEFAULT current_timestamp
|
||||
);
|
||||
|
||||
CREATE INDEX locks_dav_name_idx ON locks(dav_name);
|
||||
GRANT SELECT,INSERT,UPDATE,DELETE ON locks TO general;
|
||||
|
||||
CREATE TABLE property (
|
||||
dav_name TEXT,
|
||||
property_name TEXT,
|
||||
property_value TEXT,
|
||||
changed_on TIMESTAMP DEFAULT current_timestamp,
|
||||
changed_by INT REFERENCES usr ( user_no ),
|
||||
PRIMARY KEY ( dav_name, property_name )
|
||||
);
|
||||
|
||||
CREATE INDEX properties_dav_name_idx ON property(dav_name);
|
||||
GRANT SELECT,INSERT,UPDATE,DELETE ON property TO general;
|
||||
|
||||
|
||||
SELECT new_db_revision(1,1,7, 'July' );
|
||||
@ -1,59 +0,0 @@
|
||||
-- SQL file for AWL tables
|
||||
|
||||
-- Table for holding the schema version so we can be more structured in future
|
||||
CREATE TABLE awl_db_revision (
|
||||
schema_id INT4,
|
||||
schema_major INT4,
|
||||
schema_minor INT4,
|
||||
schema_patch INT4,
|
||||
schema_name TEXT,
|
||||
applied_on TIMESTAMP WITH TIME ZONE DEFAULT current_timestamp
|
||||
);
|
||||
GRANT SELECT ON awl_db_revision TO general;
|
||||
|
||||
CREATE or REPLACE FUNCTION check_db_revision( INT, INT, INT ) RETURNS BOOLEAN AS '
|
||||
DECLARE
|
||||
major ALIAS FOR $1;
|
||||
minor ALIAS FOR $2;
|
||||
patch ALIAS FOR $3;
|
||||
matching INT;
|
||||
BEGIN
|
||||
SELECT COUNT(*) INTO matching FROM awl_db_revision
|
||||
WHERE schema_major = major AND schema_minor = minor AND schema_patch = patch;
|
||||
IF matching != 1 THEN
|
||||
RAISE EXCEPTION ''Database has not been upgraded to %.%.%'', major, minor, patch;
|
||||
RETURN FALSE;
|
||||
END IF;
|
||||
SELECT COUNT(*) INTO matching FROM awl_db_revision
|
||||
WHERE (schema_major = major AND schema_minor = minor AND schema_patch > patch)
|
||||
OR (schema_major = major AND schema_minor > minor)
|
||||
OR (schema_major > major)
|
||||
;
|
||||
IF matching >= 1 THEN
|
||||
RAISE EXCEPTION ''Database revisions after %.%.% have already been applied.'', major, minor, patch;
|
||||
RETURN FALSE;
|
||||
END IF;
|
||||
RETURN TRUE;
|
||||
END;
|
||||
' LANGUAGE 'plpgsql';
|
||||
|
||||
-- The schema_id should always be incremented. The major / minor / patch level should
|
||||
-- be incremented as seems appropriate...
|
||||
CREATE or REPLACE FUNCTION new_db_revision( INT, INT, INT, TEXT ) RETURNS BOOLEAN AS '
|
||||
DECLARE
|
||||
major ALIAS FOR $1;
|
||||
minor ALIAS FOR $2;
|
||||
patch ALIAS FOR $3;
|
||||
blurb ALIAS FOR $4;
|
||||
new_id INT;
|
||||
BEGIN
|
||||
SELECT MAX(schema_id) + 1 INTO new_id FROM awl_db_revision;
|
||||
IF NOT FOUND OR new_id IS NULL THEN
|
||||
new_id := 1;
|
||||
END IF;
|
||||
INSERT INTO awl_db_revision (schema_id, schema_major, schema_minor, schema_patch, schema_name)
|
||||
VALUES( new_id, major, minor, patch, blurb );
|
||||
RETURN TRUE;
|
||||
END;
|
||||
' LANGUAGE 'plpgsql';
|
||||
SELECT new_db_revision(1,1,0, 'Dawn' );
|
||||
Loading…
x
Reference in New Issue
Block a user