Fondation

This commit is contained in:
alma 2026-01-16 23:09:30 +01:00
parent cc4aa8a0a7
commit c06691ce47

View File

@ -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()
);