Skip to content

Commit aaa35c7

Browse files
authored
Add files via upload
1 parent cdee85d commit aaa35c7

File tree

8 files changed

+93
-18
lines changed

8 files changed

+93
-18
lines changed

controllers/todoControllers.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ exports.createTodo = async (req, res,next) => {
1212

1313
exports.getTodos = async(req, res,next) => {
1414
try {
15-
console.log(req.headers, 'header');
1615
let todos = await todoService.getTodos();
1716
return Common.sendSuccessResponse(res, 200, "Success", todos);
1817
}
@@ -26,7 +25,7 @@ exports.getUpdate = async(req, res,next) => {
2625

2726
try {
2827
let updateDataObj = {};
29-
let fieldArray = ['title', 'description'];
28+
let fieldArray = ['title', 'description', 'user'];
3029
let id = Number(req.params.id);
3130
let data = req.body;
3231

controllers/userControllers.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ exports.refreshToken = async(req, res, next) => {
5656
}
5757
catch(error) {
5858
return Common.sendErrorResponse(res, 500, "Internal Server Error", error);
59-
}
60-
59+
}
6160
}
6261

6362
exports.logout = async(req, res, next) => {

model/todo.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ const todoSchema = mongoose.Schema({
1414
description: {
1515
type: String,
1616
required: true
17-
}
17+
},
18+
user: {
19+
type: mongoose.SchemaTypes.ObjectId,
20+
required: true,
21+
ref: 'User'
22+
}
1823
});
1924

2025
module.exports = mongoose.model('Todo', todoSchema);

routes/authRoutes.js

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,26 @@
11
const express = require('express');
22
const router = express.Router();
3-
3+
const validate = require('../validation/Inputvalidator')
4+
const validatorSchema = require('../validation/validatorSchema');
45

56
const userControllers = require('../controllers/userControllers');
67

7-
router.post('/register', userControllers.register);
8-
router.post('/login', userControllers.login);
9-
router.post('/refreshToken', userControllers.refreshToken);
10-
router.delete('/logout', userControllers.logout);
8+
router.post(
9+
'/register',
10+
[validate.validate(validatorSchema.registerValidation)],
11+
userControllers.register
12+
);
13+
router.post(
14+
'/login',
15+
[validate.validate(validatorSchema.loginValidation)],
16+
userControllers.login
17+
);
18+
router.post(
19+
'/refreshToken',
20+
userControllers.refreshToken
21+
);
22+
router.delete(
23+
'/logout',
24+
userControllers.logout
25+
);
1126
module.exports = router;

routes/todoRoutes.js

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,33 @@
11
const express = require('express');
22
const router = express.Router();
3-
const checkToken = require('../validation/validateToken')
4-
3+
const checkToken = require('../validation/validateToken');
4+
const validate = require('../validation/Inputvalidator')
5+
const validatorSchema = require('../validation/validatorSchema');
56
const todoController = require('../controllers/todoControllers.js');
67

7-
router.get('/', checkToken.validateToken, todoController.getTodos );
8-
router.post('/create-todo', checkToken.validateToken, todoController.createTodo);
9-
router.put('/:id', checkToken.validateToken, todoController.getUpdate);
10-
router.delete('/:id/delete', checkToken.validateToken, todoController.getDelete);
8+
router.get(
9+
'/',
10+
checkToken.validateToken,
11+
todoController.getTodos
12+
);
13+
router.post(
14+
'/create-todo',
15+
[
16+
checkToken.validateToken,
17+
validate.validate(validatorSchema.todoValidation)
18+
],
19+
todoController.createTodo
20+
);
21+
22+
router.put(
23+
'/:id',
24+
checkToken.validateToken,
25+
todoController.getUpdate
26+
);
27+
router.delete(
28+
'/:id/delete',
29+
checkToken.validateToken,
30+
todoController.getDelete
31+
);
1132

1233
module.exports = router;

services/todoService.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const { compareSync } = require('bcrypt');
22
const Todo = require('../model/todo');
33

44
getTodos = () => {
5-
return Todo.find({}).exec();
5+
return Todo.find({}).populate('user').exec();
66
}
77

88
saveTodo = (data) => {
@@ -25,7 +25,7 @@ updateTodo = (data, id) => {
2525

2626
return Todo.findByIdAndUpdate(id.toString(),
2727
{ $set: data },
28-
{ upsert: true });
28+
{new:true});
2929
}
3030

3131

validation/Inputvalidator.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
const Common = require('../helpers/common');
2+
3+
exports.validate = (Schema) => {
4+
return (req, res, next) => {
5+
6+
const { error } = Schema.validate(req.body);
7+
if(error) {
8+
return Common.sendErrorResponse(res, 406, 'Invalid Input', error);
9+
}
10+
next();
11+
}
12+
}
13+
14+
15+

validation/validatorSchema.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
const joi = require("joi");
2+
3+
exports.todoValidation = joi.object({
4+
id: joi.number().integer().min(1).max(9999).required(),
5+
title: joi.string().alphanum().min(3).max(25).trim(true).required(),
6+
description: joi.string().alphanum().min(3).max(100).trim(true).required(),
7+
user: joi.string().alphanum().min(3).max(100).trim(true).required(),
8+
})
9+
10+
11+
exports.registerValidation = joi.object({
12+
firstname: joi.string().alphanum().min(3).max(32).trim(true).required(),
13+
lastname: joi.string().alphanum().min(3).max(32).trim(true).required(),
14+
email: joi.string().email().trim(true).required(),
15+
password: joi.string().min(8).trim(true).required(),
16+
})
17+
18+
exports.loginValidation = joi.object({
19+
email: joi.string().email().trim(true).required(),
20+
password: joi.string().min(8).trim(true).required(),
21+
})

0 commit comments

Comments
 (0)