File size: 988 Bytes
430550f
8738ae8
430550f
 
 
 
 
 
5efe61a
430550f
 
 
 
5efe61a
430550f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import mongoose, { Schema, Document } from 'mongoose';
import { Encrypter } from '../service/encrypter';


export const UserSchema: Schema = new Schema({
  email : {
    type: String,
    unique: true,
    required: 'Email required',
    lowercase: true,
  },
  name: {
    type: String,
    required: 'Name required',
    lowercase: true,
  },
  password: {
    type: String,
    required: 'Password required',
  },
  balance: {
    type: Number,
    lowercase: true,
    default: 0,
    required: 'Balance required',
  },
});

export interface UserInputDTO {
  password: string;
  email: string;
  name: string;
  balance?: number;
}

export interface LoginInputDTO {
  email: string;
  password: string;
}

UserSchema.pre<UserInputDTO & Document>('save', async function (next) {
  const encrypter = new Encrypter();
  const hashPassword = await encrypter.hash(this.password);
  this.password = hashPassword;
  next();
});

export const UserModel = mongoose.model('users', UserSchema);