Skip to content

Commit

Permalink
started adding todo route
Browse files Browse the repository at this point in the history
  • Loading branch information
FilipeDominguesGit committed Aug 10, 2017
1 parent 5ccd721 commit 1555cda
Show file tree
Hide file tree
Showing 6 changed files with 214 additions and 0 deletions.
59 changes: 59 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"eslint": "^4.4.1"
},
"dependencies": {
"body-parser": "^1.17.2",
"express": "^4.15.4"
}
}
6 changes: 6 additions & 0 deletions src/app.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
// Dependencies
const express = require('express');
const bodyParser = require('body-parser');

// configs
const port = process.env.PORT || 3001;

// ExpressJs Setup
const app = express();
app.use(bodyParser.json());

//import main controller
const routes = require('./routes');

app.use(routes);

// Starting up the server
app.listen(port, function() {
Expand Down
8 changes: 8 additions & 0 deletions src/routes/home.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
const express = require('express');
const router = express.Router();

router.get('/',(req,res)=>{
res.send('Hello Dev.to!');
});

module.exports = router;
10 changes: 10 additions & 0 deletions src/routes/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const express = require('express');
const router = express.Router();

const homeRoute = require('./home');
const todosRoute = require('./v1/todos');

router.use('/', homeRoute);
router.use('/v1/todos', todosRoute);

module.exports = router;
130 changes: 130 additions & 0 deletions src/routes/v1/todos.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
const express = require('express');
const router = express.Router();

let inMemoryTodoDB = [
{name:'todo 0',description:'description here', done:false},
{name:'todo 1',description:'description here', done:true}
];

router.get('/',(req,res)=>{

const {done,name} = req.query;

const output = inMemoryTodoDB
.filter((todo)=>{
if(done)
return (todo.done.toString().toLocaleLowerCase() == done.toLocaleLowerCase());
return true;
})
.filter((todo)=>{
if(name)
return (todo.name === name);
return true;
});

res.json(output).status(200);
});

router.get('/:id',(req,res)=>{

const {id} = req.params;

const output = inMemoryTodoDB[id];

if(output){
res.json(output).status(200);
}
else{
res.send(404);
}
});

router.post('/',(req,res)=>{

const { name,description,done } = req.body;

const newTodo = { name,description,done };

inMemoryTodoDB.push(newTodo);

res.json(newTodo).status(201);
});

router.put('/:id/name',(req,res)=>{

const {id} =req.params;
const {name} =req.body;

if(!inMemoryTodoDB[id]){
res.status(404);
return;
}

inMemoryTodoDB[id].name = name || inMemoryTodoDB[id].name;

const output = inMemoryTodoDB[id].name;

res.json(output).status(200);
});

router.put('/:id/description',(req,res)=>{

const {description } = req.body;
const {id} = req.params;

if(!inMemoryTodoDB[id]){
res.status(404);
return;
}

inMemoryTodoDB[id].description = description || inMemoryTodoDB[id].description;

const output = inMemoryTodoDB[id].description;

res.json(output).status(200);
});

router.put('/:id/done',(req,res)=>{

let {done } = req.body;
const {id} = req.params;

if(!inMemoryTodoDB[id]){
res.status(404);
return;
}

done = ( 'true' == done.toLocaleLowerCase() || 'false' == done.toLocaleLowerCase() )
? Boolean(req.body.done)
: undefined;

if(!done){
res.send(400);
return;
}

inMemoryTodoDB[id].done = done ;

const output = inMemoryTodoDB[id].done;

res.json(output).status(200);
});

router.delete('/:id',(req,res)=>{

const {id} = req.params;

if(!inMemoryTodoDB[id])
{
res.send(404);
return;
}

inMemoryTodoDB.splice(id,1);

res.send(200);

});


module.exports = router;

0 comments on commit 1555cda

Please sign in to comment.