Repository: generalgmt/RESTfulAPITutorial Branch: master Commit: 4f1fba6c7b7d Files: 7 Total size: 3.3 KB Directory structure: gitextract_9ir2vwol/ ├── .gitignore ├── README.md ├── api/ │ ├── controllers/ │ │ └── todoListController.js │ ├── models/ │ │ └── todoListModel.js │ └── routes/ │ └── todoListRoutes.js ├── package.json └── server.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ logs *.log npm-debug.log* node_modules .npm .DS_Store ================================================ FILE: README.md ================================================ ## Nodejs in 10 minutes clone the project ### Installations * npm install ### Run * npm run start :) ================================================ FILE: api/controllers/todoListController.js ================================================ 'use strict'; var mongoose = require('mongoose'), Task = mongoose.model('Tasks'); exports.list_all_tasks = function(req, res) { Task.find({}, function(err, task) { if (err) res.send(err); res.json(task); }); }; exports.create_a_task = function(req, res) { var new_task = new Task(req.body); new_task.save(function(err, task) { if (err) res.send(err); res.json(task); }); }; exports.read_a_task = function(req, res) { Task.findById(req.params.taskId, function(err, task) { if (err) res.send(err); res.json(task); }); }; exports.update_a_task = function(req, res) { Task.findOneAndUpdate({_id:req.params.taskId}, req.body, {new: true}, function(err, task) { if (err) res.send(err); res.json(task); }); }; // Task.remove({}).exec(function(){}); exports.delete_a_task = function(req, res) { Task.remove({ _id: req.params.taskId }, function(err, task) { if (err) res.send(err); res.json({ message: 'Task successfully deleted' }); }); }; ================================================ FILE: api/models/todoListModel.js ================================================ 'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var TaskSchema = new Schema({ name: { type: String, Required: 'Kindly enter the name of the task' }, Created_date: { type: Date, default: Date.now }, status: { type: [{ type: String, enum: ['pending', 'ongoing', 'completed'] }], default: ['pending'] } }); module.exports = mongoose.model('Tasks', TaskSchema); ================================================ FILE: api/routes/todoListRoutes.js ================================================ 'use strict'; module.exports = function(app) { var todoList = require('../controllers/todoListController'); // todoList Routes app.route('/tasks') .get(todoList.list_all_tasks) .post(todoList.create_a_task); app.route('/tasks/:taskId') .get(todoList.read_a_task) .put(todoList.update_a_task) .delete(todoList.delete_a_task); }; ================================================ FILE: package.json ================================================ { "name": "todolistapi", "version": "1.0.0", "description": "RESTful todoListApi", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "nodemon server.js" }, "repository": { "type": "git", "url": "git+https://github.com/generalgmt/RESTfulAPITutorial.git" }, "keywords": [ "RESTful", "API", "Tutorial" ], "author": "olatunde garuba", "license": "ISC", "bugs": { "url": "https://github.com/generalgmt/RESTfulAPITutorial/issues" }, "homepage": "https://github.com/generalgmt/RESTfulAPITutorial#readme", "devDependencies": { "nodemon": "^1.11.0" }, "dependencies": { "body-parser": "^1.15.2", "express": "^4.14.0", "mongoose": "^5.7.7" } } ================================================ FILE: server.js ================================================ var express = require('express'), app = express(), port = process.env.PORT || 3000, mongoose = require('mongoose'), Task = require('./api/models/todoListModel'), bodyParser = require('body-parser'); mongoose.Promise = global.Promise; mongoose.connect('mongodb://localhost/Tododb'); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); var routes = require('./api/routes/todoListRoutes'); routes(app); app.use(function(req, res) { res.status(404).send({url: req.originalUrl + ' not found'}) }); app.listen(port); console.log('todo list RESTful API server started on: ' + port);