From 4ef52aa2c6789e83614db55dd736c57cf4d99cc6 Mon Sep 17 00:00:00 2001 From: Alex van Andel Date: Fri, 8 Sep 2023 12:39:29 +0100 Subject: [PATCH] perf: Move query to get just the user email to the main get query (#11230) --- packages/core/getBusyTimes.ts | 13 +++---------- packages/core/getUserAvailability.ts | 1 + packages/prisma/selects/user.ts | 3 +-- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/packages/core/getBusyTimes.ts b/packages/core/getBusyTimes.ts index 297c64e0d1..b997e2bf8b 100644 --- a/packages/core/getBusyTimes.ts +++ b/packages/core/getBusyTimes.ts @@ -13,6 +13,7 @@ import type { EventBusyDetails } from "@calcom/types/Calendar"; export async function getBusyTimes(params: { credentials: Credential[]; userId: number; + userEmail: string; username: string; eventTypeId?: number; startTime: string; @@ -27,6 +28,7 @@ export async function getBusyTimes(params: { const { credentials, userId, + userEmail, username, eventTypeId, startTime, @@ -45,15 +47,6 @@ export async function getBusyTimes(params: { status: BookingStatus.ACCEPTED, })}` ); - // get user email for attendee checking. - const user = await prisma.user.findUniqueOrThrow({ - where: { - id: userId, - }, - select: { - email: true, - }, - }); /** * A user is considered busy within a given time period if there @@ -97,7 +90,7 @@ export async function getBusyTimes(params: { ...sharedQuery, attendees: { some: { - email: user.email, + email: userEmail, }, }, }, diff --git a/packages/core/getUserAvailability.ts b/packages/core/getUserAvailability.ts index 3617679d9c..9783478654 100644 --- a/packages/core/getUserAvailability.ts +++ b/packages/core/getUserAvailability.ts @@ -180,6 +180,7 @@ export const getUserAvailability = async function getUsersWorkingHoursLifeTheUni endTime: getBusyTimesEnd, eventTypeId, userId: user.id, + userEmail: user.email, username: `${user.username}`, beforeEventBuffer, afterEventBuffer, diff --git a/packages/prisma/selects/user.ts b/packages/prisma/selects/user.ts index 3da14c31a0..9c62e70275 100644 --- a/packages/prisma/selects/user.ts +++ b/packages/prisma/selects/user.ts @@ -3,6 +3,7 @@ import { Prisma } from "@prisma/client"; export const availabilityUserSelect = Prisma.validator()({ id: true, timeZone: true, + email: true, bufferTime: true, startTime: true, username: true, @@ -22,7 +23,6 @@ export const availabilityUserSelect = Prisma.validator()({ }); export const baseUserSelect = Prisma.validator()({ - email: true, name: true, destinationCalendar: true, locale: true, @@ -35,7 +35,6 @@ export const baseUserSelect = Prisma.validator()({ export const userSelect = Prisma.validator()({ select: { - email: true, name: true, allowDynamicBooking: true, destinationCalendar: true,