Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions models/Todo.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
const mongoose = require('mongoose');
const mongoose = require("mongoose");
const Schema = mongoose.Schema;

let Todo = new Schema({
title: {
type: String
const TodoSchema = new Schema(
{
title: {
type: String,
},
body: {
type: String,
},
},
body: {
type: String
}
},{ timestamps: true }
{ timestamps: true }
);

module.exports = mongoose.model('Todo', Todo);
module.exports = mongoose.model("Todo", TodoSchema);
17 changes: 8 additions & 9 deletions routes/todoRoute.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
const express = require('express');
const TodoController = require('../todosController/todos');

const express = require("express");
const TodoController = require("../todosController/todos");
const router = express.Router();

router.get('/todos', TodoController.getAllTodos);
router.get('/todos/:id', TodoController.getTodo);
router.post('/todos', TodoController.createTodo);
router.put('/todos/:id', TodoController.updateTodo);
router.delete('/todos/:id', TodoController.deleteTodo);
router.get("/todos", TodoController.getAllTodos);
router.get("/todos/:id", TodoController.getTodo);
router.post("/todos", TodoController.createTodo);
router.put("/todos/:id", TodoController.updateTodo);
router.delete("/todos/:id", TodoController.deleteTodo);

module.exports = router;
module.exports = router;
59 changes: 28 additions & 31 deletions todosController/todos.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
const express = require('express');
const express = require("express");

const mongoose = require('mongoose');
const {ObjectId} = mongoose.Types;
const mongoose = require("mongoose");
const { ObjectId } = mongoose.Types;

// Require Todo model in our routes module
let Todo = require('../models/Todo');
const Todo = require("../models/Todo");

class TodosController {

async getAllTodos(req, res) {
try {
const todos = await Todo.find();
Expand All @@ -17,12 +16,12 @@ class TodosController {
}
}

async getTodo(req, res){
const {id} = req.params;
if(!ObjectId.isValid(id) && !id.match(/^[a-fA-F0-9]{24}$/)){
async getTodo(req, res) {
const { id } = req.params;
if (!ObjectId.isValid(id) && !id.match(/^[a-fA-F0-9]{24}$/)) {
return res.status(404).send({
success: 'false',
message: 'todo does not exist',
success: "false",
message: "todo does not exist",
});
}
try {
Expand All @@ -37,66 +36,64 @@ class TodosController {
let newTodo = new Todo(req.body);
if (!req.body.title) {
return res.status(400).send({
success: 'false',
message: 'title is required',
success: "false",
message: "title is required",
});
}
try {
const todo = await newTodo.save();
res.status(200).json(todo);
} catch (error) {
res.status(400).send({
success: 'false',
message: 'Unable to save to database',
success: "false",
message: "Unable to save to database",
});
}
}

async updateTodo(req, res){
const {id} = req.params;
async updateTodo(req, res) {
const { id } = req.params;
const data = req.body;

if(!ObjectId.isValid(id) && !id.match(/^[a-fA-F0-9]{24}$/)){
if (!ObjectId.isValid(id) && !id.match(/^[a-fA-F0-9]{24}$/)) {
return res.status(404).send({
success: 'false',
message: 'todo does not exist',
success: "false",
message: "todo does not exist",
});
}
if (!req.body.title) {
return res.status(400).send({
success: 'false',
message: 'title is required',
success: "false",
message: "title is required",
});
}

try {
const updated = await Todo.findByIdAndUpdate(id, data, {new:true});
const updated = await Todo.findByIdAndUpdate(id, data, { new: true });
return res.status(200).json(updated);

} catch (error) {
res.json(error);
}
}

async deleteTodo(req, res){
const {id} = req.params;
if(!ObjectId.isValid(id) && !id.match(/^[a-fA-F0-9]{24}$/)){
async deleteTodo(req, res) {
const { id } = req.params;
if (!ObjectId.isValid(id) && !id.match(/^[a-fA-F0-9]{24}$/)) {
return res.status(404).send({
success: 'false',
message: 'todo does not exist',
success: "false",
message: "todo does not exist",
});
}
try {
const deleted = await Todo.findByIdAndRemove(id);
return res.status(200).json(deleted);
} catch (error) {
res.status(400).send({
success: 'false',
message: 'Unable to delete from database',
success: "false",
message: "Unable to delete from database",
});
}
}

}

const TodoController = new TodosController();
Expand Down