Files
calendar/packages/trpc/server/routers/viewer/teams/get.handler.ts
T

50 lines
1.2 KiB
TypeScript

import { getTeamWithoutMembers } from "@calcom/lib/server/queries/teams";
import { MembershipRepository } from "@calcom/lib/server/repository/membership";
import { TRPCError } from "@trpc/server";
import type { TrpcSessionUser } from "../../../trpc";
import type { TGetInputSchema } from "./get.schema";
type GetDataOptions = {
ctx: {
user: NonNullable<TrpcSessionUser>;
};
input: TGetInputSchema;
};
export const get = async ({ ctx, input }: GetDataOptions) => {
const teamMembership = await MembershipRepository.findFirstByUserIdAndTeamId({
userId: ctx.user.id,
teamId: input.teamId,
});
if (!teamMembership) {
throw new TRPCError({
code: "UNAUTHORIZED",
message: "You are not a member of this team.",
});
}
const team = await getTeamWithoutMembers({
id: input.teamId,
userId: ctx.user.organization?.isOrgAdmin ? undefined : ctx.user.id,
isOrgView: input?.isOrg,
});
if (!team) {
throw new TRPCError({
code: "NOT_FOUND",
message: "Team not found",
});
}
const membership = {
role: teamMembership.role,
accepted: teamMembership.accepted,
};
return { ...team, membership };
};
export default get;