Fondation
This commit is contained in:
parent
cc4aa8a0a7
commit
c06691ce47
@ -4,6 +4,30 @@ import { authOptions } from "@/app/api/auth/options";
|
|||||||
import { prisma } from "@/lib/prisma";
|
import { prisma } from "@/lib/prisma";
|
||||||
import { getCachedCalendarData, cacheCalendarData } from "@/lib/redis";
|
import { getCachedCalendarData, cacheCalendarData } from "@/lib/redis";
|
||||||
import { logger } from "@/lib/logger";
|
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.
|
* 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)
|
// Extract mission calendars (excluding those already in personalCalendars)
|
||||||
// Use a Set to avoid duplicate calendars by ID
|
// Use a Set to avoid duplicate calendars by ID
|
||||||
const personalCalendarIds = new Set(filteredPersonalCalendars.map(cal => cal.id));
|
const personalCalendarIds = new Set(filteredPersonalCalendars.map(cal => cal.id));
|
||||||
const missionCalendars = missionUserRelations
|
const missionCalendars: CalendarWithIncludes[] = missionUserRelations
|
||||||
.flatMap(mu => mu.mission.calendars)
|
.flatMap(mu => mu.mission?.calendars || [])
|
||||||
.filter(cal => !personalCalendarIds.has(cal.id)); // Exclude calendars already in personalCalendars
|
.filter(cal => !personalCalendarIds.has(cal.id)) as CalendarWithIncludes[]; // Exclude calendars already in personalCalendars
|
||||||
|
|
||||||
// Combine personal and mission calendars
|
// 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)
|
// 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()
|
new Map(calendars.map(cal => [cal.id, cal])).values()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user