All files / src/models user.ts

100% Statements 10/10
100% Branches 0/0
100% Functions 2/2
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 464x 4x                             4x                           9x 9x 9x         4x   4x 4x   9x      
import mongoose from 'mongoose'
import bcrypt from 'mongoose-bcrypt'
 
interface UserAttributes {
  email: string;
  password: string;
  createdAt?: Date;
  updatedAt?: Date;
}
 
export interface UserDoc extends mongoose.Document {
  email: string;
  password: string;
  verifyPassword(password: string): boolean;
}
 
const userSchema = new mongoose.Schema({
  email: {
    type: String,
    required: true
  },
 
  password: {
    type: String,
    required: true
  }
}, {
  toJSON: {
    versionKey: false,
    transform (doc, ret) {
      ret.id = ret._id
      delete ret._id
      delete ret.password
    }
  }
})
 
userSchema.plugin(bcrypt)
 
export const UserModel = mongoose.model('User', userSchema)
export default class User extends UserModel {
  constructor(attributes: UserAttributes) {
    super(attributes)
  }
}