Boa tarde pessoal, Estou tentando usar o select d...
# orm-help
o
Boa tarde pessoal, Estou tentando usar o select dentro do create para não retornar o Password para o cliente, nas consultas com Find funcionou perfeitamente, mas na hora do create ele informa no retorno que está faltando o campo password. Alguém poderia me ajudar?
Copy code
import { User } from '@prisma/client';
import { AppError } from '../shared/errors/AppError';
import prismaClient from '../prisma';
import { hash } from 'bcryptjs';
import { CreateUserDTO } from '../dtos/user/CreateUserDto';

class CreateUserService {
  async execute({
    name,
    email,
    password,
    admin,
  }: CreateUserDTO): Promise<User | undefined> {
    const userAlreadyExists = await prismaClient.user.findUnique({
      where: {
        email,
      },
    });
    if (userAlreadyExists) {
      throw new AppError('Email address already used.');
    }

    const passwodHash = await hash(password, 8);

    const user = await prismaClient.user.create({
      data: {
        name,
        email,
        password: passwodHash,
        admin,
      },
      select: {
        id: true,
        name: true,
        email: true,
        admin: true,
        created_at: true,
      },
    });
    return user;
  }
}

export { CreateUserService };
n
o
Boa tarde meu amigo, Consegui resolver removendo o Promise<User> pois ele já está tipado com o CreateUserDTO, fiz isso e deu certo. Muito obrigado pela atenção. Ficou assim:
Copy code
import { AppError } from '../shared/errors/AppError';
import prismaClient from '../prisma';
import { hash } from 'bcryptjs';
import { CreateUserDTO } from '../dtos/user/CreateUserDto';

class CreateUserService {
  async execute({ name, email, password, admin }: CreateUserDTO) {
    const userAlreadyExists = await prismaClient.user.findUnique({
      where: {
        email,
      },
    });
    if (userAlreadyExists) {
      throw new AppError('Email address already used.');
    }

    const passwodHash = await hash(password, 8);

    const user = await prismaClient.user.create({
      data: {
        name,
        email,
        password: passwodHash,
        admin,
      },
      select: {
        id: true,
        name: true,
        email: true,
        admin: true,
        created_at: true,
      },
    });
    return user;
  }
}

export { CreateUserService };
n
Great to hear! 👍
o
🙏👊