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);
|