From 04d7537e2f393e8e8fc0c97c28367afd18ff8ec1 Mon Sep 17 00:00:00 2001 From: Alex van Andel Date: Mon, 16 Dec 2024 15:50:20 +0000 Subject: [PATCH] perf: improve insights where query and type fix (#18211) * perf: insights perf improvement * removed additional const --- apps/web/pages/api/cron/monthlyDigestEmail.ts | 9 +++++---- packages/features/insights/server/events.ts | 13 +++++-------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/apps/web/pages/api/cron/monthlyDigestEmail.ts b/apps/web/pages/api/cron/monthlyDigestEmail.ts index 2d00eedbb5..dbd623abfc 100644 --- a/apps/web/pages/api/cron/monthlyDigestEmail.ts +++ b/apps/web/pages/api/cron/monthlyDigestEmail.ts @@ -158,13 +158,14 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) take: 10, }); - const eventTypeIds = bookingsFromSelected - .filter((booking) => typeof booking.eventTypeId === "number") - .map((booking) => booking.eventTypeId); + const eventTypeIds = bookingsFromSelected.reduce((acc: number[], booking) => { + if (typeof booking.eventTypeId !== "number") return acc; + return [...acc, booking.eventTypeId]; + }, []); const eventTypeWhereConditional: Prisma.EventTypeWhereInput = { id: { - in: eventTypeIds as number[], + in: eventTypeIds, }, }; diff --git a/packages/features/insights/server/events.ts b/packages/features/insights/server/events.ts index 19a7ea12d4..434f4ecd62 100644 --- a/packages/features/insights/server/events.ts +++ b/packages/features/insights/server/events.ts @@ -483,7 +483,6 @@ class EventsInsights { // Obtain the where conditional let whereConditional: Prisma.BookingTimeStatusWhereInput = {}; - let teamConditional: Prisma.TeamWhereInput = {}; if (startDate && endDate) { whereConditional.createdAt = { @@ -522,14 +521,12 @@ class EventsInsights { if (teamsFromOrg.length === 0) { return {}; } - teamConditional = { - id: { - in: [organizationId, ...teamsFromOrg.map((t) => t.id)], - }, - }; + const teamIds: number[] = [organizationId, ...teamsFromOrg.map((t) => t.id)]; const usersFromOrg = await prisma.membership.findMany({ where: { - team: teamConditional, + teamId: { + in: teamIds, + }, accepted: true, }, select: { @@ -548,7 +545,7 @@ class EventsInsights { }, { teamId: { - in: [organizationId, ...teamsFromOrg.map((t) => t.id)], + in: teamIds, }, isTeamBooking: true, },