feat(calendar): add ics_subscriptions table and calendar_events columns (migrations v10-v11)
This commit is contained in:
@@ -405,6 +405,76 @@ const MIGRATIONS = [
|
||||
END;
|
||||
`,
|
||||
},
|
||||
{
|
||||
version: 10,
|
||||
description: 'ICS-Abonnements Tabelle',
|
||||
up: `
|
||||
CREATE TABLE IF NOT EXISTS ics_subscriptions (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL,
|
||||
url TEXT NOT NULL,
|
||||
color TEXT NOT NULL DEFAULT '#6366f1',
|
||||
shared INTEGER NOT NULL DEFAULT 0,
|
||||
created_by INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
||||
etag TEXT,
|
||||
last_modified TEXT,
|
||||
last_sync TEXT,
|
||||
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
||||
);
|
||||
`,
|
||||
},
|
||||
{
|
||||
version: 11,
|
||||
description: 'calendar_events: external_source ICS, subscription_id, user_modified',
|
||||
up: `
|
||||
CREATE TABLE calendar_events_new (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
title TEXT NOT NULL,
|
||||
description TEXT,
|
||||
start_datetime TEXT NOT NULL,
|
||||
end_datetime TEXT,
|
||||
all_day INTEGER NOT NULL DEFAULT 0,
|
||||
location TEXT,
|
||||
color TEXT NOT NULL DEFAULT '#007AFF',
|
||||
assigned_to INTEGER REFERENCES users(id) ON DELETE SET NULL,
|
||||
created_by INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
external_calendar_id TEXT,
|
||||
external_source TEXT NOT NULL DEFAULT 'local'
|
||||
CHECK(external_source IN ('local', 'google', 'apple', 'ics')),
|
||||
recurrence_rule TEXT,
|
||||
subscription_id INTEGER REFERENCES ics_subscriptions(id) ON DELETE CASCADE,
|
||||
user_modified INTEGER NOT NULL DEFAULT 0,
|
||||
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
|
||||
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
|
||||
);
|
||||
|
||||
INSERT INTO calendar_events_new
|
||||
(id, title, description, start_datetime, end_datetime, all_day, location, color,
|
||||
assigned_to, created_by, external_calendar_id, external_source, recurrence_rule,
|
||||
subscription_id, user_modified, created_at, updated_at)
|
||||
SELECT id, title, description, start_datetime, end_datetime, all_day, location, color,
|
||||
assigned_to, created_by, external_calendar_id, external_source, recurrence_rule,
|
||||
NULL, 0, created_at, updated_at
|
||||
FROM calendar_events;
|
||||
|
||||
DROP TRIGGER IF EXISTS trg_calendar_events_updated_at;
|
||||
DROP TABLE calendar_events;
|
||||
ALTER TABLE calendar_events_new RENAME TO calendar_events;
|
||||
|
||||
CREATE TRIGGER trg_calendar_events_updated_at
|
||||
AFTER UPDATE ON calendar_events FOR EACH ROW
|
||||
BEGIN UPDATE calendar_events SET updated_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now') WHERE id = OLD.id; END;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_calendar_start ON calendar_events(start_datetime);
|
||||
CREATE INDEX IF NOT EXISTS idx_calendar_assigned ON calendar_events(assigned_to);
|
||||
CREATE INDEX IF NOT EXISTS idx_calendar_external_id ON calendar_events(external_calendar_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_calendar_sub ON calendar_events(subscription_id);
|
||||
|
||||
CREATE UNIQUE INDEX idx_calendar_sub_extid
|
||||
ON calendar_events (subscription_id, external_calendar_id)
|
||||
WHERE subscription_id IS NOT NULL;
|
||||
`,
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user