import { prisma, type PrismaTransaction } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; const getOrgMemberOrTeamWhere = (memberId?: number | null, teamId?: number | null) => { const conditions: Prisma.TeamWhereInput[] = []; if (memberId) { conditions.push({ AND: [ { members: { some: { userId: memberId, accepted: true, }, }, }, { isOrganization: true, }, ], }); } if (teamId) { conditions.push({ AND: [ { children: { some: { id: teamId, }, }, }, { isOrganization: true, }, ], }); } return { OR: conditions, }; }; export default async function getOrgIdFromMemberOrTeamId( args: { memberId?: number | null; teamId?: number | null; }, tx?: PrismaTransaction ) { const client = tx ?? prisma; const orgId = await client.team.findFirst({ where: getOrgMemberOrTeamWhere(args.memberId, args.teamId), select: { id: true, }, }); return orgId?.id; } export async function getPublishedOrgIdFromMemberOrTeamId(args: { memberId?: number | null; teamId?: number | null; }) { const orgId = await prisma.team.findFirst({ where: { ...getOrgMemberOrTeamWhere(args.memberId, args.teamId), slug: { not: null }, }, select: { id: true, }, }); return orgId?.id; }