/** * Modul: Generic CalDAV Sync * Zweck: Multi-Account CalDAV synchronization with calendar selection * Abhängigkeiten: tsdav, server/db.js, server/services/ics-parser.js */ import { createLogger } from '../logger.js'; const log = createLogger('CalDAV'); import * as db from '../db.js'; // Reused functions from apple-calendar.js import { parseICS, buildICS, escapeICS, unescapeICS, formatICSDate, tzLocalToUTC, applyDuration } from './ics-parser.js'; // -------------------------------------------------------- // Helper Functions // -------------------------------------------------------- function normalizeCalColor(c) { if (!c) return null; if (/^#[0-9a-fA-F]{8}$/.test(c)) return c.slice(0, 7); // strip alpha if (/^#[0-9a-fA-F]{6}$/.test(c)) return c; return null; } function upsertExternalCalendar(source, externalId, name, color) { const row = db.get().prepare(` INSERT INTO external_calendars (source, external_id, name, color) VALUES (?, ?, ?, ?) ON CONFLICT(source, external_id) DO UPDATE SET name = excluded.name, color = excluded.color RETURNING id `).get(source, externalId, name, color); return row.id; } // -------------------------------------------------------- // Credentials Helpers // -------------------------------------------------------- function getAccountById(accountId) { return db.get().prepare('SELECT * FROM caldav_accounts WHERE id = ?').get(accountId); } function getAllAccounts() { return db.get().prepare('SELECT * FROM caldav_accounts').all(); } // -------------------------------------------------------- // Export placeholder (will be filled in next tasks) // -------------------------------------------------------- export { };