Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
N
nodejs-60-2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Supharoek Sudadet
nodejs-60-2
Commits
0cb334fa
Commit
0cb334fa
authored
Feb 07, 2018
by
Supharoek Sudadet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add contact-manager CLI project
parent
1cdb3b61
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
440 additions
and
0 deletions
+440
-0
.gitignore
.gitignore
+1
-0
contact.js
week04/contact-manager/contact.js
+38
-0
index.js
week04/contact-manager/index.js
+32
-0
logic.js
week04/contact-manager/logic.js
+63
-0
package.json
week04/contact-manager/package.json
+18
-0
yarn.lock
week04/contact-manager/yarn.lock
+288
-0
No files found.
.gitignore
0 → 100644
View file @
0cb334fa
node_modules/
week04/contact-manager/contact.js
0 → 100644
View file @
0cb334fa
#!/usr/bin/env node
//const lo = require('./logic');
//console.log(lo.toLower("Supharoek Sudadet"));
const
program
=
require
(
'commander'
);
const
{
addContract
,
getContract
}
=
require
(
'./logic'
);
program
.
version
(
'0.0.1'
)
.
description
(
'Contact management system'
);
program
.
command
(
'addContact <firstname> <lastname> <phone> <email>'
)
.
alias
(
'a'
)
.
description
(
'เพิ่มข้อมูล'
)
.
action
((
firstname
,
lastname
,
phone
,
email
)
=>
{
addContact
({
firstname
,
lastname
,
phone
,
email
});
//console.log(`User: ${firstname} ${lastname} ${phone} ${email}`);
});
program
.
command
(
'getContact <name>'
)
.
alias
(
'r'
)
.
description
(
'Get contact'
)
.
action
(
name
=>
getContact
(
name
));
/*program
.command('programmer')
.alias('p')
.description('ดูข้อมูลโปรแกรมเมอร์')
.action(() => {
console.log(`programmer คือ ยิว`);
});
*/
program
.
parse
(
process
.
argv
);
week04/contact-manager/index.js
0 → 100644
View file @
0cb334fa
#!/usr/bin/env node
//const lower = require("./logic"); // impport function
const
{
addContact
,
getContact
}
=
require
(
"./logic"
);
//console.log(lower.toLower("PATIPHAN MARAK"));
const
program
=
require
(
'commander'
);
program
.
version
(
'0.1.0'
)
.
description
(
'Contact management system'
);
program
.
command
(
'addContact <firstame> <lastname> <phone> <email>'
)
.
alias
(
'a'
)
.
description
(
'Add a contact'
)
.
action
((
firstname
,
lastname
,
phone
,
email
)
=>
{
//addContact({ firstname, lastname, phone, email });
console
.
log
(
`User :
${
firstname
}
${
lastname
}
${
phone
}
${
email
}
`
);
});
program
.
command
(
'programmer'
)
.
alias
(
'p'
)
.
description
(
'programmer'
)
.
action
(()
=>
{
console
.
log
(
'Programmer is Yiw'
);
});
console
.
log
(
process
.
argv
);
//program.parse(process.argv); // พาสคำสั่ง
\ No newline at end of file
week04/contact-manager/logic.js
0 → 100644
View file @
0cb334fa
// Converts value to lowercase
//let lo = function toLower(v) {
// return v.toLowerCase();
//}
const
mongoose
=
require
(
'mongoose'
);
// An Object-Document Mapper for Node.js
//const assert = require('assert'); // N.B: Assert module comes bundled with Node.js.
mongoose
.
Promise
=
global
.
Promise
;
// Allows us to use Native promises without throwing error.
// Connect to a single MongoDB instance. The connection string could be that of a remote server
// We assign the connection instance to a constant to be used later in closing the connection
const
db
=
mongoose
.
connect
(
'mongodb://localhost:27017/contactdb'
);
// Converts value to lowercase
function
toLower
(
v
)
{
return
v
.
toLowerCase
();
}
// Define a contact Schema
const
contactSchema
=
mongoose
.
Schema
({
firstname
:
{
type
:
String
,
set
:
toLower
},
lastname
:
{
type
:
String
,
set
:
toLower
},
phone
:
{
type
:
String
,
set
:
toLower
},
email
:
{
type
:
String
,
set
:
toLower
}
});
// Define model as an interface with the database
const
Contact
=
mongoose
.
model
(
'Contact'
,
contactSchema
);
/**
* @function [addContact]
* @returns {String} Status
*/
const
addContact
=
(
contact
)
=>
{
console
.
info
(
`กำลังเพิ่ม รายการติดต่อ
${
contact
}
`
);
Contact
.
create
(
contact
,
(
err
)
=>
{
//assert.equal(null, err);
console
.
info
(
'เพิ่ม รายการติดต่อใหม่ สำเร็จ'
);
db
.
disconnect
();
});
};
/**
* @function [getContact]
* @returns {Json} contacts
*/
const
getContact
=
(
name
)
=>
{
// Define search criteria. The search here is case-insensitive and inexact.
const
search
=
new
RegExp
(
name
,
'i'
);
Contact
.
find
({
$or
:
[{
firstname
:
search
},
{
lastname
:
search
}]})
.
exec
((
err
,
contact
)
=>
{
//assert.equal(null, err);
console
.
info
(
contact
);
console
.
info
(
`ค้นเจอทั้งหมด
${
contact
.
length
}
รายการ`
);
db
.
disconnect
();
});
};
// Export all methods
module
.
exports
=
{
addContact
,
getContact
};
//exports .toLower = lo;
week04/contact-manager/package.json
0 → 100644
View file @
0cb334fa
{
"name"
:
"contact"
,
"version"
:
"1.0.0"
,
"description"
:
"ทำตามเขา"
,
"main"
:
"index.js"
,
"author"
:
"yiw"
,
"license"
:
"MIT"
,
"preferGlobal"
:
true
,
"bin"
:
"./contact.js"
,
"dependencies"
:
{
"commander"
:
"^2.14.0"
,
"inquirer"
:
"^5.1.0"
,
"mongoose"
:
"^5.0.3"
}
}
week04/contact-manager/yarn.lock
0 → 100644
View file @
0cb334fa
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
ansi-escapes@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92"
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
ansi-styles@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
dependencies:
color-convert "^1.9.0"
async@2.1.4:
version "2.1.4"
resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4"
dependencies:
lodash "^4.14.0"
bluebird@3.5.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
bson@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/bson/-/bson-1.0.4.tgz#93c10d39eaa5b58415cbc4052f3e53e562b0b72c"
chalk@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
dependencies:
ansi-styles "^3.1.0"
escape-string-regexp "^1.0.5"
supports-color "^4.0.0"
chardet@^0.4.0:
version "0.4.2"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
cli-cursor@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
dependencies:
restore-cursor "^2.0.0"
cli-width@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
color-convert@^1.9.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
dependencies:
color-name "^1.1.1"
color-name@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
commander@^2.14.0:
version "2.14.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.0.tgz#7b25325963e6aace20d3a9285b09379b0c2208b5"
debug@2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
dependencies:
ms "2.0.0"
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
external-editor@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48"
dependencies:
chardet "^0.4.0"
iconv-lite "^0.4.17"
tmp "^0.0.33"
figures@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
dependencies:
escape-string-regexp "^1.0.5"
has-flag@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
iconv-lite@^0.4.17:
version "0.4.19"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
inquirer@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.1.0.tgz#19da508931892328abbbdd4c477f1efc65abfd67"
dependencies:
ansi-escapes "^3.0.0"
chalk "^2.0.0"
cli-cursor "^2.1.0"
cli-width "^2.0.0"
external-editor "^2.1.0"
figures "^2.0.0"
lodash "^4.3.0"
mute-stream "0.0.7"
run-async "^2.2.0"
rxjs "^5.5.2"
string-width "^2.1.0"
strip-ansi "^4.0.0"
through "^2.3.6"
is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
is-promise@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
kareem@2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.0.3.tgz#d05c7ad76b045bc50c197b2cd13d2d1ef5671070"
lodash.get@4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
lodash@^4.14.0, lodash@^4.3.0:
version "4.17.5"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
mimic-fn@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
mongodb-core@3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.0.2.tgz#914896092dd45427d9a4f98a7997a0bfb81d163b"
dependencies:
bson "~1.0.4"
require_optional "^1.0.1"
mongodb@3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.0.2.tgz#28172302ed4e9388d8091e2cc4618057e6f5debc"
dependencies:
mongodb-core "3.0.2"
mongoose-legacy-pluralize@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4"
mongoose@^5.0.3:
version "5.0.3"
resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.0.3.tgz#e320c629fa44e4afba1d8b4ac865f9a4cea7f157"
dependencies:
async "2.1.4"
bson "~1.0.4"
kareem "2.0.3"
lodash.get "4.4.2"
mongodb "3.0.2"
mongoose-legacy-pluralize "1.0.2"
mpath "0.3.0"
mquery "3.0.0"
ms "2.0.0"
regexp-clone "0.0.1"
sliced "1.0.1"
mpath@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.3.0.tgz#7a58f789e9b5fd3c94520634157960f26bd5ef44"
mquery@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.0.0.tgz#e5f387dbabc0b9b69859e550e810faabe0ceabb0"
dependencies:
bluebird "3.5.0"
debug "2.6.9"
regexp-clone "0.0.1"
sliced "0.0.5"
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
mute-stream@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
onetime@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
dependencies:
mimic-fn "^1.0.0"
os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
regexp-clone@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-0.0.1.tgz#a7c2e09891fdbf38fbb10d376fb73003e68ac589"
require_optional@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e"
dependencies:
resolve-from "^2.0.0"
semver "^5.1.0"
resolve-from@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
restore-cursor@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
dependencies:
onetime "^2.0.0"
signal-exit "^3.0.2"
run-async@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
dependencies:
is-promise "^2.1.0"
rxjs@^5.5.2:
version "5.5.6"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.6.tgz#e31fb96d6fd2ff1fd84bcea8ae9c02d007179c02"
dependencies:
symbol-observable "1.0.1"
semver@^5.1.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
signal-exit@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
sliced@0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/sliced/-/sliced-0.0.5.tgz#5edc044ca4eb6f7816d50ba2fc63e25d8fe4707f"
sliced@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
string-width@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
dependencies:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
strip-ansi@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
dependencies:
ansi-regex "^3.0.0"
supports-color@^4.0.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
dependencies:
has-flag "^2.0.0"
symbol-observable@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
through@^2.3.6:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
dependencies:
os-tmpdir "~1.0.2"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment