feat(calendar): track external calendar name and color through Google/Apple sync

Google and Apple sync services now fetch calendar metadata and persist it via
upsertExternalCalendar(). The /calendar and /upcoming endpoints JOIN on
external_calendars to return cal_name and cal_color with every event.
This commit is contained in:
Konrad M.
2026-04-21 21:51:00 +02:00
parent 6cae070061
commit 69c72f3abd
3 changed files with 81 additions and 32 deletions
+8 -2
View File
@@ -125,10 +125,13 @@ router.get('/', (req, res) => {
SELECT e.*,
u_assigned.display_name AS assigned_name,
u_assigned.avatar_color AS assigned_color,
u_created.display_name AS creator_name
u_created.display_name AS creator_name,
ec.name AS cal_name,
ec.color AS cal_color
FROM calendar_events e
LEFT JOIN users u_assigned ON u_assigned.id = e.assigned_to
LEFT JOIN users u_created ON u_created.id = e.created_by
LEFT JOIN external_calendars ec ON ec.id = e.calendar_ref_id
WHERE (
(e.recurrence_rule IS NULL AND
DATE(e.start_datetime) <= ? AND
@@ -182,9 +185,12 @@ router.get('/upcoming', (req, res) => {
const rawEvents = db.get().prepare(`
SELECT e.*,
u_assigned.display_name AS assigned_name,
u_assigned.avatar_color AS assigned_color
u_assigned.avatar_color AS assigned_color,
ec.name AS cal_name,
ec.color AS cal_color
FROM calendar_events e
LEFT JOIN users u_assigned ON u_assigned.id = e.assigned_to
LEFT JOIN external_calendars ec ON ec.id = e.calendar_ref_id
WHERE (
(e.recurrence_rule IS NULL AND DATE(e.start_datetime) BETWEEN ? AND ?)
OR