55 lines
1.0 KiB
TypeScript
55 lines
1.0 KiB
TypeScript
|
import { Team } from "@prisma/client";
|
||
|
import prisma from "@lib/prisma";
|
||
|
import logger from "@lib/logger";
|
||
|
|
||
|
const log = logger.getChildLogger({ prefix: ["[lib] getTeam"] });
|
||
|
export const getTeam = async (idOrSlug: string): Promise<Team | null> => {
|
||
|
const teamIdOrSlug = idOrSlug;
|
||
|
|
||
|
let team = null;
|
||
|
|
||
|
log.debug(`{teamIdOrSlug} ${teamIdOrSlug}`);
|
||
|
|
||
|
const teamSelectInput = {
|
||
|
id: true,
|
||
|
name: true,
|
||
|
slug: true,
|
||
|
members: {
|
||
|
where: {
|
||
|
accepted: true,
|
||
|
},
|
||
|
select: {
|
||
|
user: {
|
||
|
select: {
|
||
|
id: true,
|
||
|
username: true,
|
||
|
email: true,
|
||
|
name: true,
|
||
|
bio: true,
|
||
|
avatar: true,
|
||
|
theme: true,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
|
||
|
team = await prisma.team.findFirst({
|
||
|
where: {
|
||
|
OR: [
|
||
|
{
|
||
|
id: parseInt(teamIdOrSlug) || undefined,
|
||
|
},
|
||
|
{
|
||
|
slug: teamIdOrSlug,
|
||
|
},
|
||
|
],
|
||
|
},
|
||
|
select: teamSelectInput,
|
||
|
});
|
||
|
|
||
|
log.debug(`{team}`, { team });
|
||
|
|
||
|
return team;
|
||
|
};
|