import { IdentityContext } from '@app/server/identity'; import { prisma, uuid } from '@app/server/prisma/client'; import { MutationSignUpArgs } from '@generated/types'; import bcrypt from 'bcrypt'; export async function SignUpResolver( _: any, { input }: MutationSignUpArgs, { identity }: IdentityContext ): Promise { const existingUsername = await prisma.user.findUnique({ where: { username: input.username }, select: { id: true } }); if (existingUsername != null) throw new Error('User with this username already exists.'); const existingEmail = await prisma.user.findUnique({ where: { email: input.email }, select: { id: true } }); if (existingEmail != null) throw new Error('Email is already in use.'); const hashedPassword = await bcrypt.hash(input.password, 10); await prisma.user.create({ data: { id: uuid(), email: input.email, username: input.username, password: hashedPassword } }); }