Skip to content
Open
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
63 changes: 31 additions & 32 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');
let 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 @@ -35,68 +34,68 @@ class TodosController {

async createTodo(req, res) {
let newTodo = new Todo(req.body);
let title = req.body.title;
let body = req.body.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();
const todo = await newTodo.save({ title, body });
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