-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
115 lines (103 loc) · 3.1 KB
/
index.js
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
const mongoose = require('mongoose');
const Table = require('cli-table');
var colors = require('colors');
// Map global promise - to get rid of warning
mongoose.Promise = global.Promise;
// Connect to db
const db = mongoose.connect('mongodb://localhost:27017/employees', {
useMongoClient: true
});
// Import Employee Model
const Employee = require('./models/employee');
// Add Employee
const addEmployee = (employee) => {
Employee.create(employee)
.then((employee) => {
console.info('Employee added'.green);
db.close();
});
}
// Find Employee
const findEmployee = (ename) => {
// make case insensitive
var search = new RegExp(ename, 'i');
Employee.find({$or: [{firstname: search}, {lastname: search}]})
.then((employees) => {
if(employees.length === 0) {
console.info(`No Employees with Name: ${ename}`.red);
} else {
console.log('Resize console window if table is disfigured.'.black.bgWhite);
var table = new Table({
head: ['Name', 'Phone', 'Email', 'Department', 'Title', 'ID']
, colWidths: [15, 15, 25, 18, 23, 27]
});
for(var i=0; i<employees.length; i++) {
var id = employees[i]._id
var name = (`${employees[i].firstname} ${employees[i].lastname}`);
var phone = employees[i].phone;
var email = employees[i].email;
var dept = employees[i].dept;
var title = employees[i].title;
table.push(
[name, phone, email, dept, title, id]
);
}
console.log(table.toString());
if(employees.length === 1) {
console.log('1 Match found.'.cyan);
} else {
console.log(`${employees.length} Matches found.`.cyan);
}
}
db.close();
});
}
// Update Employee
const updateEmployee = (_id, employee) => {
Employee.update({_id}, employee)
.then((employee) => {
console.info(`Employee Record Updated.`.blue);
db.close();
});
}
// Remove Employee
const removeEmployee = (_id) => {
Employee.remove({_id})
.then((employee) => {
console.info(`Employee Record Deleted.`.red);
db.close();
});
}
// List Employee
const listEmployees = () => {
Employee.find()
.then((employees) => {
console.log('Resize console window if table is disfigured.'.black.bgWhite);
var table = new Table({
head: ['Name', 'Phone', 'Email', 'Department', 'Title', 'ID']
, colWidths: [15, 15, 25, 18, 23, 27]
});
for(var i=0; i<employees.length; i++) {
var id = employees[i]._id
var name = (`${employees[i].firstname} ${employees[i].lastname}`);
var phone = employees[i].phone;
var email = employees[i].email;
var dept = employees[i].dept;
var title = employees[i].title;
table.push(
[name, phone, email, dept, title, id]
);
}
console.log(table.toString());
console.info(`${employees.length} Employees Listed.`.cyan);
db.close();
});
}
// Export all functions
module.exports = {
addEmployee,
findEmployee,
updateEmployee,
removeEmployee,
listEmployees
}