CREATE TABLE IF NOT EXISTS categories ( id TEXT PRIMARY KEY, name TEXT NOT NULL, color TEXT NOT NULL DEFAULT '#6b7280', icon TEXT NOT NULL DEFAULT '📌', sort_order INTEGER NOT NULL DEFAULT 0, deleted INTEGER NOT NULL DEFAULT 0, created_at TEXT NOT NULL DEFAULT (datetime('now')), updated_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS events ( id TEXT PRIMARY KEY, title TEXT NOT NULL, description TEXT NOT NULL DEFAULT '', start TEXT NOT NULL, end TEXT NOT NULL, all_day INTEGER NOT NULL DEFAULT 0, category_id TEXT REFERENCES categories(id), color TEXT NOT NULL DEFAULT '#6b7280', node_id TEXT, link_type TEXT DEFAULT 'node', recurring_rule TEXT, reminder_minutes TEXT DEFAULT '[]', completed INTEGER NOT NULL DEFAULT 0, completed_at TEXT, source_series TEXT, created_at TEXT NOT NULL DEFAULT (datetime('now')), updated_at TEXT NOT NULL DEFAULT (datetime('now')) ); CREATE INDEX IF NOT EXISTS idx_events_start ON events(start); CREATE INDEX IF NOT EXISTS idx_events_end ON events(end); CREATE INDEX IF NOT EXISTS idx_events_node_id ON events(node_id); CREATE INDEX IF NOT EXISTS idx_events_category_id ON events(category_id); CREATE INDEX IF NOT EXISTS idx_categories_deleted ON categories(deleted);