import yapi from '../yapi.js'
import mongoose  from 'mongoose'
import baseModel from './base.js'

class userModel extends baseModel{
    getName(){
        return 'user'
    }

    getSchema(){
        return{
           username: {
                type: String,
                required: true   
           },
           password:{
               type:String,
               required: true
          },
           email: {
               type: String,
               required: true
           },
           passsalt: String,
           role: String,
           add_time: Number,
           up_time: Number 
        }
    }
    save(data){
        let user = new this.model(data);
        return user.save();
    }
    checkRepeat(email){
        return this.model.count({
            email: email
        })
    }
    list(){
        return this.model.find().select("_id username email role  add_time up_time").exec()  //显示id name email role 
    }
    listWithPaging(page, limit) {
        page = parseInt(page);
        limit = parseInt(limit);
        return this.model.find().skip((page - 1) * limit).limit(limit).select("_id username email role  add_time up_time").exec();
    }
    listCount() {
        return this.model.count();
    }
    findByEmail(email){
        return this.model.findOne({email: email})
    }
    findById(id){
        return this.model.findById({
            _id: id
        })
    }
    del (id) {
        return this.model.deleteOne({
            _id: id 
        })
    }
    update(id,data){
        return this.model.update({
            _id: id
        }, data)
    }
    search(keyword) {
        return this.model.find({
            $or: [
                { email: new RegExp(keyword, 'i') },
                { username: new RegExp(keyword, 'i')}
            ]
        }, {
            passsalt: 0,
            password: 0
        }).limit(10)
    }

}

module.exports = userModel