diff --git a/README.md b/README.md index b26b556..7655487 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,14 @@ We don't need to worry about update or delete. * Import and use the controller functions in the appropiate Router # Part 4 - Database +* https://github.com/AustinCodingAcademy/express-mongodb +* Create a database somewhere for advanced-express-practice +* Create a new file database.js, implement the code for MongoClient and connect() +* Implement the mongodb client tool into your controllers for list, show, create +* Use insertMany() for create and find() for list and show +* How are your controllers going to get access to const db = client.db("advanced-express-practice"); + +# Part 5 - Mongoose * In server/index.js, import and use mongoose. Connect to a database "advanced-express-practice" * Create the mongoose models for Contact, Vehicle, Comment Product * CommentModel - body diff --git a/controllers/comments.js b/controllers/comments.js new file mode 100644 index 0000000..911cf92 --- /dev/null +++ b/controllers/comments.js @@ -0,0 +1,36 @@ +let comments = require("../comments") + +//get - all comments +exports.list = function list(req, res) { + return res.json(comments); +} + +//get - one comment +exports.show = function list(req, res) { + let comment = comments.find(p=>p._id === Number(req.params.id)); + res.json(comment) +} + +//post +exports.create = function list(req, res) { + let id = comments.length + 1; + let body = req.body.body; + let postId = req.body.postId; + comments.push({"_id":id, "body":body, "postId":postId}) + res.json(comments); +} + +//put +exports.update = function list(req, res) { + let comment = comments.find(p=>p._id === Number(req.params.id)); + comment.body = body.body; + comment.postId = body.postId; + res.json(comment) +} + +//delete +exports.remove = function list(req, res) { + let comment = comments.find(p=>p._id === Number(req.params.id)); + comment.isActive = false; + res.send("deleted"); +} \ No newline at end of file diff --git a/controllers/contacts.js b/controllers/contacts.js new file mode 100644 index 0000000..5ab478d --- /dev/null +++ b/controllers/contacts.js @@ -0,0 +1,38 @@ +let contacts = require("../contacts"); + +//get - all contacts +exports.list = function list(req, res) { + return res.json(contacts); +} + +//get - one contact +exports.show = function list(req, res) { + let contact = contacts.find(p=>p._id === Number(req.params.id)); + res.json(contact) +} + +//post +exports.create = function list(req, res) { + let id = contacts.length + 1; + let name = req.body.name; + let occupation = req.body.occupation; + let avatar = req.body.avatar; + contacts.push({"_id":id, "name":name, "occupation":occupation, "avatar":avatar}) + res.json(contacts); +} + +//put +exports.update = function list(req, res) { + let contact = contacts.find(p=>p._id === Number(req.params.id)); + contact.name = body.name; + contact.occupation = body.occupation; + contact.avatar = body.avatar; + res.json(contact) +} + +//delete +exports.remove = function list(req, res) { + let contact = contacts.find(p=>p._id === Number(req.params.id)); + contact.isActive = false; + res.send("deleted"); +} \ No newline at end of file diff --git a/controllers/products.js b/controllers/products.js new file mode 100644 index 0000000..13f8489 --- /dev/null +++ b/controllers/products.js @@ -0,0 +1,36 @@ +let products = require("../products"); + +//get - all products +exports.list = function list(req, res) { + return res.json(products); +} + +//get - one product +exports.show = function list(req, res) { + let product = products.find(p=>p._id === Number(req.params.id)); + res.json(product) +} + +//post +exports.create = function list(req, res) { + let id = products.length + 1; + let name = req.body.name; + let description = req.body.description; + products.push({name, description, "_id":id, "Product Name":name, "Product desc":description}) + res.json(products); +} + +//put +exports.update = function list(req, res) { + let product = products.find(p=>p._id === Number(req.params.id)); + product.name = body.name; + product.description = body.description; + res.json(product) +} + +//delete +exports.remove = function list(req, res) { + let product = products.find(p=>p._id === Number(req.params.id)); + product.isActive = false; + res.send("deleted"); +} \ No newline at end of file diff --git a/controllers/vehicles.js b/controllers/vehicles.js new file mode 100644 index 0000000..e46da4a --- /dev/null +++ b/controllers/vehicles.js @@ -0,0 +1,40 @@ +let vehicles = require("../vehicles"); + + +//get - all vehicles +exports.list = function list(req, res) { + return res.json(vehicles); +} + +//get - one vehicle +exports.show = function list(req, res) { + let vehicle = vehicles.find(p=>p._id === Number(req.params.id)); + res.json(vehicle) +} + +//post +exports.create = function list(req, res) { + let id = vehicles.length + 1; + let year = req.body.year; + let make = req.body.make; + let model = req.body.model; + vehicles.push({year, make, model, "_id":id, "Vehicle Year":year, "Vehicle Make":make, "Vehicle Model":model}) + res.json(vehicles); +} + +//put +exports.update = function list(req, res) { + let vehicle = vehicles.find(p=>p._id === Number(req.params.id)); + vehicle.year = body.year; + vehicle.make = body.make; + vehicle.model = body.model; + res.json(vehicle) +} + +//delete +exports.remove = function list(req, res) { + let vehicle = vehicles.find(p=>p._id === Number(req.params.id)); + vehicle.isActive = false; + res.send("deleted"); +} + diff --git a/index.js b/index.js index 3d47752..b648840 100644 --- a/index.js +++ b/index.js @@ -1,17 +1,20 @@ let express = require("express"); -let comments = require("./comments"); -let products = require("./products"); -let vehicles = require("./vehicles"); -let contacts = require("./contacts"); +let comments = require("./routes/comments"); +let contacts = require("./routes/contacts"); +let products = require("./routes/products"); +let vehicles = require("./routes/vehicles"); const bodyParser = require("body-parser"); const app = express(); + app.use(bodyParser.json()); app.use(express.static("public")); +app.use(comments); +app.use(contacts); +app.use(products); +app.use(vehicles); const thePort = 3001; - - app.listen(thePort, (err) => { if (err) { return console.log("Error", err); diff --git a/routes/comments.js b/routes/comments.js new file mode 100644 index 0000000..49b8c9a --- /dev/null +++ b/routes/comments.js @@ -0,0 +1,11 @@ +const express = require("express"); +const router = express.Router(); +const {list,show,create} = require("../controllers/comments"); + + +//comments +router.get('/comments', list); +router.get('/comments/:id', show); +router.post('/comments/', create); + +module.exports = router; diff --git a/routes/contacts.js b/routes/contacts.js new file mode 100644 index 0000000..759c57c --- /dev/null +++ b/routes/contacts.js @@ -0,0 +1,10 @@ +const express = require("express"); +const router = express.Router(); +const {list,show,create} = require("../controllers/contacts"); + +//contacts +router.get('/contacts', list); +router.get('/contacts/:id', show); +router.post('/contacts/', create); + + module.exports = router; \ No newline at end of file diff --git a/routes/products.js b/routes/products.js new file mode 100644 index 0000000..9055fd7 --- /dev/null +++ b/routes/products.js @@ -0,0 +1,11 @@ +const express = require("express"); +const router = express.Router(); +const {list,show,create} = require("../controllers/products"); + +//products +router.get('/products', list); +router.get('/products/:id', show); +router.post('/products/', create); + + +module.exports = router; diff --git a/routes/vehicles.js b/routes/vehicles.js new file mode 100644 index 0000000..c459291 --- /dev/null +++ b/routes/vehicles.js @@ -0,0 +1,12 @@ +const express = require("express"); +const router = express.Router(); +const {list,show,create} = require("../controllers/vehicles"); + + +//vehicles +router.get('/vehicles', list); +router.get('/vehicles/:id', show); +router.post('/vehicles/', create); + + +module.exports = router;