eletrotupi / tcc/ api/src/services/user.service.ts9178180cdc205057166b109bc467d46e0cec37aa
1.1 KB | 51 lines Raw
1
import { prisma } from '@app/lib/prisma';
2
import { User } from '@prisma/client';
3
import bcrypt from 'bcryptjs';
4

5
import {
6
  CreateUserInput,
7
  UpdateUserInput,
8
} from "@app/schemas";
9

10
export const createUser = async(input: CreateUserInput): Promise<User> => {
11
  const { password, ...data } = input;
12
  const encryptedPassword = bcrypt.hashSync(password, 10);
13

14
  return await prisma.user.create({
15
    data: {
16
      ...data, encryptedPassword
17
    }
18
  })
19
};
20

21
export const findUserById = async(id: number): Promise<User | null> => {
22
  return await prisma.user.findUnique({
23
    where: {
24
      id
25
    }
26
  });
27
};
28

29
export const findUserByEmail = async(email: string): Promise<User | null> => {
30
  return await prisma.user.findUnique({
31
    where: {
32
      email
33
    }
34
  });
35
};
36

37
export const updateUser = async (input: UpdateUserInput): Promise<User> => {
38
  const { password, ...data } = input;
39

40
  const updateData = {
41
    ...data,
42
    ...(password && { encryptedPassword: bcrypt.hashSync(password, 10) })
43
  };
44

45
  return await prisma.user.update({
46
    where: {
47
      id: input.id
48
    },
49
    data: updateData
50
  })
51
}