perf: Replace isTeamMember util with an index DB call (#24066)
* Remove isTeamMember * updates * revert * better
This commit is contained in:
@@ -396,16 +396,6 @@ export async function isTeamOwner(userId: number, teamId: number) {
|
||||
}));
|
||||
}
|
||||
|
||||
export async function isTeamMember(userId: number, teamId: number) {
|
||||
return !!(await prisma.membership.findFirst({
|
||||
where: {
|
||||
userId,
|
||||
teamId,
|
||||
accepted: true,
|
||||
},
|
||||
}));
|
||||
}
|
||||
|
||||
export function generateNewChildEventTypeDataForDB({
|
||||
eventType,
|
||||
userId,
|
||||
|
||||
@@ -303,13 +303,22 @@ export class MembershipRepository {
|
||||
});
|
||||
}
|
||||
|
||||
static async findUniqueByUserIdAndTeamId({ userId, teamId }: { userId: number; teamId: number }) {
|
||||
static async findUniqueByUserIdAndTeamId({
|
||||
userId,
|
||||
teamId,
|
||||
accepted,
|
||||
}: {
|
||||
userId: number;
|
||||
teamId: number;
|
||||
accepted?: boolean;
|
||||
}) {
|
||||
return await prisma.membership.findUnique({
|
||||
where: {
|
||||
userId_teamId: {
|
||||
userId,
|
||||
teamId,
|
||||
},
|
||||
accepted,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { isTeamMember } from "@calcom/features/ee/teams/lib/queries";
|
||||
import { MembershipRepository } from "@calcom/lib/server/repository/membership";
|
||||
import { prisma } from "@calcom/prisma";
|
||||
import type { TrpcSessionUser } from "@calcom/trpc/server/types";
|
||||
|
||||
@@ -14,8 +14,14 @@ type UpdateMembershipOptions = {
|
||||
};
|
||||
|
||||
export const getInternalNotesPresetsHandler = async ({ ctx, input }: UpdateMembershipOptions) => {
|
||||
if (!(await isTeamMember(ctx.user?.id, input.teamId))) {
|
||||
throw new TRPCError({ code: "UNAUTHORIZED" });
|
||||
const membership = await MembershipRepository.findUniqueByUserIdAndTeamId({
|
||||
userId: ctx.user.id,
|
||||
teamId: input.teamId,
|
||||
accepted: true,
|
||||
});
|
||||
|
||||
if (!membership) {
|
||||
throw new TRPCError({ code: "UNAUTHORIZED", message: "User is not a member of this team" });
|
||||
}
|
||||
|
||||
return await prisma.internalNotePreset.findMany({
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { enrichUserWithDelegationCredentialsIncludeServiceAccountKey } from "@calcom/lib/delegationCredential/server";
|
||||
import { getUserAvailabilityService } from "@calcom/lib/di/containers/GetUserAvailability";
|
||||
import { isTeamMember } from "@calcom/features/ee/teams/lib/queries";
|
||||
import { MembershipRepository } from "@calcom/lib/server/repository/membership";
|
||||
import type { TrpcSessionUser } from "@calcom/trpc/server/types";
|
||||
|
||||
@@ -17,8 +16,16 @@ type GetMemberAvailabilityOptions = {
|
||||
|
||||
export const getMemberAvailabilityHandler = async ({ ctx, input }: GetMemberAvailabilityOptions) => {
|
||||
const userAvailabilityService = getUserAvailabilityService();
|
||||
const team = await isTeamMember(ctx.user?.id, input.teamId);
|
||||
if (!team) throw new TRPCError({ code: "UNAUTHORIZED" });
|
||||
|
||||
const membership = await MembershipRepository.findUniqueByUserIdAndTeamId({
|
||||
userId: ctx.user.id,
|
||||
teamId: input.teamId,
|
||||
accepted: true,
|
||||
});
|
||||
|
||||
if (!membership) {
|
||||
throw new TRPCError({ code: "UNAUTHORIZED", message: "User is not a member of this team" });
|
||||
}
|
||||
|
||||
// verify member is in team
|
||||
const members = await MembershipRepository.findByTeamIdForAvailability({ teamId: input.teamId });
|
||||
|
||||
Reference in New Issue
Block a user