Skip to content

Commit 218ec91

Browse files
committed
Revert "perf: Refactor getPublicEvent to fetch org data using DB index key (calcom#21850)"
This reverts commit a37f1d9.
1 parent 6dad0e7 commit 218ec91

8 files changed

Lines changed: 51 additions & 79 deletions

File tree

apps/api/v2/src/modules/atoms/services/event-types-atom.service.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -424,10 +424,7 @@ export class EventTypesAtomService {
424424
isTeamEvent,
425425
orgSlug,
426426
this.dbRead.prisma as unknown as PrismaClient,
427-
true,
428-
undefined,
429-
false,
430-
orgId
427+
true
431428
);
432429

433430
if (!event) {

apps/web/lib/d/[link]/[slug]/getServerSideProps.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ async function getUserPageProps(context: GetServerSidePropsContext) {
2323
const { link, slug } = paramsSchema.parse(context.params);
2424
const { rescheduleUid, duration: queryDuration } = context.query;
2525
const { currentOrgDomain, isValidOrgDomain } = orgDomainConfig(context.req);
26-
const orgSlug = isValidOrgDomain ? currentOrgDomain : null;
26+
const org = isValidOrgDomain ? currentOrgDomain : null;
2727

2828
const hashedLink = await prisma.hashedLink.findUnique({
2929
where: {
@@ -86,7 +86,7 @@ async function getUserPageProps(context: GetServerSidePropsContext) {
8686
return notFound;
8787
}
8888

89-
if (!orgSlug) {
89+
if (!org) {
9090
const redirect = await getTemporaryOrgRedirect({
9191
slugs: [username],
9292
redirectType: RedirectType.User,
@@ -103,7 +103,7 @@ async function getUserPageProps(context: GetServerSidePropsContext) {
103103

104104
const [user] = await UserRepository.findUsersByUsername({
105105
usernameList: [name],
106-
orgSlug: orgSlug,
106+
orgSlug: org,
107107
});
108108

109109
if (!user) {
@@ -128,9 +128,8 @@ async function getUserPageProps(context: GetServerSidePropsContext) {
128128
username: name,
129129
eventSlug: slug,
130130
isTeamEvent,
131-
orgSlug,
131+
org,
132132
fromRedirectOfNonOrgLink: context.query.orgRedirection === "true",
133-
orgId: session?.user?.org?.id ?? session?.user?.profile?.organizationId ?? undefined,
134133
},
135134
session?.user?.id
136135
);

apps/web/lib/org/[orgSlug]/instant-meeting/team/[slug]/[type]/getServerSideProps.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
4343
} as const;
4444
}
4545

46-
const orgSlug = isValidOrgDomain ? currentOrgDomain : null;
47-
if (!orgSlug) {
46+
const org = isValidOrgDomain ? currentOrgDomain : null;
47+
if (!org) {
4848
return {
4949
notFound: true,
5050
} as const;
@@ -55,9 +55,8 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
5555
username: teamSlug,
5656
eventSlug: meetingSlug,
5757
isTeamEvent: true,
58-
orgSlug,
58+
org,
5959
fromRedirectOfNonOrgLink: context.query.orgRedirection === "true",
60-
orgId: session?.user?.org?.id ?? session?.user?.profile?.organizationId ?? undefined,
6160
},
6261
session?.user?.id
6362
);

apps/web/server/lib/[user]/[type]/getServerSideProps.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ async function getDynamicGroupPageProps(context: GetServerSidePropsContext) {
121121
const { rescheduleUid, bookingUid } = context.query;
122122
const allowRescheduleForCancelledBooking = context.query.allowRescheduleForCancelledBooking === "true";
123123
const { currentOrgDomain, isValidOrgDomain } = orgDomainConfig(context.req, context.params?.orgSlug);
124-
const orgSlug = isValidOrgDomain ? currentOrgDomain : null;
125-
if (!orgSlug) {
124+
const org = isValidOrgDomain ? currentOrgDomain : null;
125+
if (!org) {
126126
const redirect = await getTemporaryOrgRedirect({
127127
slugs: usernames,
128128
redirectType: RedirectType.User,
@@ -155,9 +155,8 @@ async function getDynamicGroupPageProps(context: GetServerSidePropsContext) {
155155
{
156156
username: usernames.join("+"),
157157
eventSlug: slug,
158-
orgSlug,
158+
org,
159159
fromRedirectOfNonOrgLink: context.query.orgRedirection === "true",
160-
orgId: session?.user?.org?.id ?? session?.user?.profile?.organizationId ?? undefined,
161160
},
162161
session?.user?.id
163162
);
@@ -242,15 +241,15 @@ async function getUserPageProps(context: GetServerSidePropsContext) {
242241
} as const;
243242
}
244243

245-
const orgSlug = isValidOrgDomain ? currentOrgDomain : null;
244+
const org = isValidOrgDomain ? currentOrgDomain : null;
246245

247246
// We use this to both prefetch the query on the server,
248247
// as well as to check if the event exist, so we can show a 404 otherwise.
249248
const eventData = await EventRepository.getPublicEvent(
250249
{
251250
username,
252251
eventSlug: slug,
253-
orgSlug,
252+
org,
254253
fromRedirectOfNonOrgLink: context.query.orgRedirection === "true",
255254
},
256255
session?.user?.id
@@ -262,7 +261,7 @@ async function getUserPageProps(context: GetServerSidePropsContext) {
262261
} as const;
263262
}
264263

265-
const allowSEOIndexing = orgSlug
264+
const allowSEOIndexing = org
266265
? user?.profile?.organization?.organizationSettings?.allowSEOIndexing
267266
? user?.allowSEOIndexing
268267
: false

packages/features/bookings/Booker/utils/event.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export type useScheduleForEventReturnType = ReturnType<typeof useScheduleForEven
1919
* of combining multiple conditional hooks.
2020
*/
2121
export const useEvent = (props?: { fromRedirectOfNonOrgLink?: boolean; disabled?: boolean }) => {
22-
const [username, eventSlug, isTeamEvent, orgSlug] = useBookerStore(
22+
const [username, eventSlug, isTeamEvent, org] = useBookerStore(
2323
(state) => [state.username, state.eventSlug, state.isTeamEvent, state.org],
2424
shallow
2525
);
@@ -29,7 +29,7 @@ export const useEvent = (props?: { fromRedirectOfNonOrgLink?: boolean; disabled?
2929
username: username ?? "",
3030
eventSlug: eventSlug ?? "",
3131
isTeamEvent,
32-
orgSlug: orgSlug ?? null,
32+
org: org ?? null,
3333
fromRedirectOfNonOrgLink: props?.fromRedirectOfNonOrgLink,
3434
},
3535
{

packages/features/eventtypes/lib/getPublicEvent.ts

Lines changed: 32 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -227,20 +227,19 @@ export const getPublicEvent = async (
227227
username: string,
228228
eventSlug: string,
229229
isTeamEvent: boolean | undefined,
230-
orgSlug: string | null,
230+
org: string | null,
231231
prisma: PrismaClient,
232232
fromRedirectOfNonOrgLink: boolean,
233233
currentUserId?: number,
234-
fetchAllUsers = false,
235-
orgId?: number
234+
fetchAllUsers = false
236235
) => {
237236
const usernameList = getUsernameList(username);
238-
const orgQuery = orgSlug ? getSlugOrRequestedSlug(orgSlug) : null;
237+
const orgQuery = org ? getSlugOrRequestedSlug(org) : null;
239238
// In case of dynamic group event, we fetch user's data and use the default event.
240239
if (usernameList.length > 1) {
241240
const usersInOrgContext = await UserRepository.findUsersByUsername({
242241
usernameList,
243-
orgSlug: orgSlug,
242+
orgSlug: org,
244243
});
245244
const users = usersInOrgContext;
246245

@@ -268,27 +267,18 @@ export const getPublicEvent = async (
268267
const disableBookingTitle = !defaultEvent.isDynamic;
269268
const unPublishedOrgUser = users.find((user) => user.profile?.organization?.slug === null);
270269

271-
const orgDetails: Pick<Team, "logoUrl" | "name"> | undefined = orgId
272-
? await prisma.team.findUniqueOrThrow({
273-
where: {
274-
id: orgId,
275-
},
276-
select: {
277-
logoUrl: true,
278-
name: true,
279-
},
280-
})
281-
: orgSlug
282-
? await prisma.team.findFirstOrThrow({
283-
where: {
284-
slug: orgSlug,
285-
},
286-
select: {
287-
logoUrl: true,
288-
name: true,
289-
},
290-
})
291-
: undefined;
270+
let orgDetails: Pick<Team, "logoUrl" | "name"> | undefined;
271+
if (org) {
272+
orgDetails = await prisma.team.findFirstOrThrow({
273+
where: {
274+
slug: org,
275+
},
276+
select: {
277+
logoUrl: true,
278+
name: true,
279+
},
280+
});
281+
}
292282

293283
return {
294284
...defaultEvent,
@@ -319,14 +309,14 @@ export const getPublicEvent = async (
319309
? {
320310
image: getPlaceholderAvatar(orgDetails?.logoUrl, orgDetails?.name),
321311
name: orgDetails?.name,
322-
username: orgSlug,
312+
username: org,
323313
}
324314
: {}),
325315
},
326316
entity: {
327317
considerUnpublished: !fromRedirectOfNonOrgLink && unPublishedOrgUser !== undefined,
328318
fromRedirectOfNonOrgLink,
329-
orgSlug: orgSlug,
319+
orgSlug: org,
330320
name: unPublishedOrgUser?.profile?.organization?.name ?? null,
331321
teamSlug: null,
332322
logoUrl: null,
@@ -447,28 +437,19 @@ export const getPublicEvent = async (
447437
eventWithUserProfiles.schedule = eventOwnerDefaultSchedule;
448438
}
449439

450-
const orgDetails: Pick<Team, "logoUrl" | "name"> | undefined | null = orgId
451-
? await prisma.team.findUnique({
452-
where: {
453-
id: orgId,
454-
},
455-
select: {
456-
logoUrl: true,
457-
name: true,
458-
},
459-
})
460-
: orgSlug
461-
? await prisma.team.findFirst({
462-
where: {
463-
slug: orgSlug,
464-
parentId: null,
465-
},
466-
select: {
467-
logoUrl: true,
468-
name: true,
469-
},
470-
})
471-
: undefined;
440+
let orgDetails: Pick<Team, "logoUrl" | "name"> | undefined | null;
441+
if (org) {
442+
orgDetails = await prisma.team.findFirst({
443+
where: {
444+
slug: org,
445+
parentId: null,
446+
},
447+
select: {
448+
logoUrl: true,
449+
name: true,
450+
},
451+
});
452+
}
472453

473454
let showInstantEventConnectNowModal = eventWithUserProfiles.isInstantEvent;
474455

@@ -526,7 +507,7 @@ export const getPublicEvent = async (
526507
(eventWithUserProfiles.team?.slug === null ||
527508
eventWithUserProfiles.owner?.profile?.organization?.slug === null ||
528509
eventWithUserProfiles.team?.parent?.slug === null),
529-
orgSlug: orgSlug,
510+
orgSlug: org,
530511
teamSlug: (eventWithUserProfiles.team?.slug || teamMetadata?.requestedSlug) ?? null,
531512
name:
532513
(eventWithUserProfiles.owner?.profile?.organization?.name ||

packages/lib/server/repository/event.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,10 @@ export class EventRepository {
88
input.username,
99
input.eventSlug,
1010
input.isTeamEvent,
11-
input.orgSlug,
11+
input.org,
1212
prisma,
1313
input.fromRedirectOfNonOrgLink,
14-
userId,
15-
false,
16-
input.orgId
14+
userId
1715
);
1816
return event;
1917
}

packages/trpc/server/routers/publicViewer/event.schema.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ export const ZEventInputSchema = z.object({
44
username: z.string(),
55
eventSlug: z.string(),
66
isTeamEvent: z.boolean().optional(),
7-
orgSlug: z.string().nullable(),
8-
orgId: z.number().optional(),
7+
org: z.string().nullable(),
98
/**
109
* Informs that the event request has been sent from a page that was reached by a redirect from non-org link(i.e. app.cal.com/username redirected to acme.cal.com/username)
1110
* Based on this decision like whether to allow unpublished organization's event to be served or not can be made.

0 commit comments

Comments
 (0)