/**
* CalDAV Client
*
* @version @package_version@
* @author Daniel Morlock <daniel.morlock@awesome-it.de>
*
* Copyright (C) Awesome IT GbR <info@awesome-it.de>
* Adapted for SQLite for cPanel, L.L.C. <cpanel.net> in 2019
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
CREATE TABLE IF NOT EXISTS caldav_calendars (
calendar_id integer NOT NULL PRIMARY_KEY,
user_id integer NOT NULL DEFAULT '0',
name varchar(255) NOT NULL,
color varchar(8) NOT NULL,
showalarms tinyint(1) NOT NULL DEFAULT '1',
readonly tinyint(1) NOT NULL DEFAULT '1',
caldav_url varchar(255) NOT NULL,
caldav_tag varchar(255) DEFAULT NULL,
caldav_user varchar(255) DEFAULT NULL,
caldav_pass varchar(1024) DEFAULT NULL,
caldav_last_change timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_caldav_calendars_user_id FOREIGN KEY (user_id)
REFERENCES users(user_id)
);
CREATE INDEX caldav_user_name_idx ON caldav_calendars(user_id, name);
CREATE TRIGGER [UpdateLastTimeForCaldavCalendar]
AFTER UPDATE
ON caldav_calendars
FOR EACH ROW
BEGIN
UPDATE caldav_calendars SET caldav_last_change_timestamp = CURRENT_TIMESTAMP WHERE calendar_id = old.calendar_id;
END
CREATE TABLE IF NOT EXISTS caldav_events (
event_id integer NOT NULL AUTO_INCREMENT PRIMARY KEY,
calendar_id integer NOT NULL DEFAULT '0',
recurrence_id integer NOT NULL DEFAULT '0',
uid varchar(255) NOT NULL DEFAULT '',
instance varchar(16) NOT NULL DEFAULT '',
isexception tinyint(1) NOT NULL DEFAULT '0',
created datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
changed datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
sequence int(1) UNSIGNED NOT NULL DEFAULT '0',
start datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
end datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
recurrence varchar(255) DEFAULT NULL,
title varchar(255) NOT NULL,
description text NOT NULL,
location varchar(255) NOT NULL DEFAULT '',
categories varchar(255) NOT NULL DEFAULT '',
url varchar(255) NOT NULL DEFAULT '',
all_day tinyint(1) NOT NULL DEFAULT '0',
free_busy tinyint(1) NOT NULL DEFAULT '0',
priority tinyint(1) NOT NULL DEFAULT '0',
sensitivity tinyint(1) NOT NULL DEFAULT '0',
status varchar(32) NOT NULL DEFAULT '',
alarms text NULL DEFAULT NULL,
attendees text DEFAULT NULL,
notifyat datetime DEFAULT NULL,
caldav_url varchar(255) NOT NULL,
caldav_tag varchar(255) DEFAULT NULL,
caldav_last_change timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT uk_caldav_event UNIQUE (calendar_id,recurrence_id,uid,caldav_tag,instance),
CONSTRAINT fk_caldav_events_calendar_id FOREIGN KEY (calendar_id)
REFERENCES caldav_calendars(calendar_id)
);
CREATE INDEX caldav_uid_idx ON caldav_events(uid);
CREATE INDEX caldav_recurrence_idx ON caldav_events(recurrence_id);
CREATE INDEX caldav_calendar_notify_idx ON caldav_events(calendar_id,notifyat);
CREATE TRIGGER [UpdateLastTimeForCalDAVEvents]
AFTER UPDATE
ON caldav_events
FOR EACH ROW
BEGIN
UPDATE caldav_events SET caldav_last_change_timestamp = CURRENT_TIMESTAMP WHERE event_id = old.event_id;
END
CREATE TABLE IF NOT EXISTS caldav_attachments (
attachment_id integer NOT NULL AUTO_INCREMENT PRIMARY KEY,
event_id integer NOT NULL DEFAULT '0',
filename varchar(255) NOT NULL DEFAULT '',
mimetype varchar(255) NOT NULL DEFAULT '',
size integer NOT NULL DEFAULT '0',
data longtext NOT NULL,
CONSTRAINT fk_caldav_attachments_event_id FOREIGN KEY (event_id)
REFERENCES caldav_events(event_id)
);
REPLACE INTO system (name, value) VALUES ('calendar-caldav-version', '2016072000');