From c06691ce47e069da7ebfd04088df4943b63f1ede Mon Sep 17 00:00:00 2001 From: alma Date: Fri, 16 Jan 2026 23:09:30 +0100 Subject: [PATCH] Fondation --- app/api/calendars/route.ts | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/app/api/calendars/route.ts b/app/api/calendars/route.ts index 6fe8b8d..8135ef6 100644 --- a/app/api/calendars/route.ts +++ b/app/api/calendars/route.ts @@ -4,6 +4,30 @@ import { authOptions } from "@/app/api/auth/options"; import { prisma } from "@/lib/prisma"; import { getCachedCalendarData, cacheCalendarData } from "@/lib/redis"; import { logger } from "@/lib/logger"; +import { Prisma } from "@prisma/client"; + +// Type helper for calendar with all includes +type CalendarWithIncludes = Prisma.CalendarGetPayload<{ + include: { + events: true; + mission: { + include: { + missionUsers: true; + }; + }; + syncConfig: { + include: { + mailCredential: { + select: { + id: true; + email: true; + display_name: true; + }; + }; + }; + }; + }; +}>; /** * Handles the GET request to retrieve calendars for the authenticated user. @@ -168,15 +192,15 @@ export async function GET(req: NextRequest) { // Extract mission calendars (excluding those already in personalCalendars) // Use a Set to avoid duplicate calendars by ID const personalCalendarIds = new Set(filteredPersonalCalendars.map(cal => cal.id)); - const missionCalendars = missionUserRelations - .flatMap(mu => mu.mission.calendars) - .filter(cal => !personalCalendarIds.has(cal.id)); // Exclude calendars already in personalCalendars + const missionCalendars: CalendarWithIncludes[] = missionUserRelations + .flatMap(mu => mu.mission?.calendars || []) + .filter(cal => !personalCalendarIds.has(cal.id)) as CalendarWithIncludes[]; // Exclude calendars already in personalCalendars // Combine personal and mission calendars - const calendars = [...filteredPersonalCalendars, ...missionCalendars]; + const calendars: CalendarWithIncludes[] = [...filteredPersonalCalendars, ...missionCalendars]; // Remove duplicate calendars by ID (in case same calendar appears multiple times) - const uniqueCalendars = Array.from( + const uniqueCalendars: CalendarWithIncludes[] = Array.from( new Map(calendars.map(cal => [cal.id, cal])).values() );