mirror of
https://github.com/documenso/documenso.git
synced 2025-11-10 04:22:32 +10:00
44 lines
910 B
TypeScript
44 lines
910 B
TypeScript
import type { z } from 'zod';
|
|
|
|
import { prisma } from '@documenso/prisma';
|
|
import { TeamMemberSchema, TeamSchema } from '@documenso/prisma/generated/zod';
|
|
|
|
export type GetTeamsOptions = {
|
|
userId: string;
|
|
};
|
|
|
|
export const ZGetTeamsResponseSchema = TeamSchema.extend({
|
|
currentTeamMember: TeamMemberSchema.pick({
|
|
role: true,
|
|
}),
|
|
}).array();
|
|
|
|
export type TGetTeamsResponse = z.infer<typeof ZGetTeamsResponseSchema>;
|
|
|
|
export const getTeams = async ({ userId }: GetTeamsOptions): Promise<TGetTeamsResponse> => {
|
|
const teams = await prisma.team.findMany({
|
|
where: {
|
|
members: {
|
|
some: {
|
|
userId,
|
|
},
|
|
},
|
|
},
|
|
include: {
|
|
members: {
|
|
where: {
|
|
userId,
|
|
},
|
|
select: {
|
|
role: true,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
return teams.map(({ members, ...team }) => ({
|
|
...team,
|
|
currentTeamMember: members[0],
|
|
}));
|
|
};
|