const mongoose = require('mongoose');
// const assert = require('assert');
mongoose.Promise = global.Promise;

//old mongoose connect
// const db = mongoose.connect('mongodb://localhost:27017/contactdb');

//new mongoose connect
mongoose.connect('mongodb://localhost:27017/contactdb');
const db = mongoose.connection;


// let lo = function toLower(v) {
//     return v.toLowerCase();
// }

function toLower(v) {
    return v.toLowerCase();
}


const contactSchema = mongoose.Schema({
    fname: {
        type: String,
        set: toLower
    },
    lname: {
        type: String,
        set: toLower
    },
    phone: {
        type: String,
        set: toLower
    },
    email: {
        type: String,
        set: toLower
    }
});


const Contact = mongoose.model('Contact', contactSchema);

const addContact = (contact) => {
    Contact.create(contact, (err) => {
        // assert.equal(null, err);    //check null & err
        console.info('เพิ่มรายการติดต่อใหม่สำเร็จ');
        db.close();
    });
};

const getContact = (name) => {
    const search = new RegExp(name, 'i');
    Contact.find({
            $or: [{
                fname: search
            }, {
                lname: search
            }]
        })
        .exec((err, contact) => {
            // assert.equal(null, err);
            console.info(contact); //return contact type ==> list
            console.info(`ค้นเจอทั้งหมด ${contact.length} รายการ`);
            db.close();
        });
};


// exports.toLower = lo;
module.exports = {
    addContact,
    getContact
};