Olá bom dia!
Feliz ano novo para todos!!
Estou estudando o NestJs com o Prisma, criando um sistema para autenticação, mas estou com um dificuldade aqui, alguém poderia me ajuda??
Esse é meu service
import { Injectable, NotFoundException } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';
import * as bcrypt from 'bcrypt';
import { PrismaService } from '../prisma/prisma.service';
@Injectable()
export class UserService {
constructor(private readonly prisma: PrismaService) {}
async create(createUserDto: CreateUserDto) {
const data = {
...createUserDto,
password: await bcrypt.hash(createUserDto.password, 10),
};
const emailExists = await this.prisma.user.findFirst({
where: {
email: data.email,
},
});
if (emailExists) {
throw new Error('Email/user already exists');
}
const createdUser = await this.prisma.user.create({ data });
return {
data: {
...createdUser,
password: undefined,
},
};
}
async findByEmail(email: string) {
const user = await this.prisma.user.findFirst({
select: {
name: true,
email: true,
},
where: { email },
});
if (user) {
throw new NotFoundException();
}
if (user.email !== email) {
throw new NotFoundException('Email not found');
}
return {
data: {
user,
},
};
}
}
Esse é meu controller
import { Controller, Post, Body, Get, Query } from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { ApiTags } from '@nestjs/swagger';
@ApiTags('user')
@Controller('user')
export class UserController {
constructor(private readonly userService: UserService) {}
@Post()
create(@Body() createUserDto: CreateUserDto) {
return this.userService.create(createUserDto);
}
@Get()
async findByEmail(@Query('email') email: string) {
return this.userService.findByEmail('email');
}
}
Esse e meuschema.prisma
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id String @id @default(uuid())
name String?
email String @unique
password String
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @default(now()) @map("updated_at")
@@map("user")
}
Quero poder criar um endpoint do tipo GET, que retorne um usuário pelo o email cadastrado.
Mas não estou conseguindo, dar o error
{
"statusCode": 500,
"message": "Internal server error"
}
Alguém pode me ajuda a resolver esse problema?