Skip to content

Commit 7538c01

Browse files
author
Ben
committed
update task creation
1 parent 2efc515 commit 7538c01

3 files changed

Lines changed: 44 additions & 30 deletions

File tree

api/controllers/todoListController.js

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const mongoose = require('mongoose');
22
const { format } = require('date-fns');
33
const sanitize = require('mongo-sanitize');
4+
const { v4: uuidv4 } = require('uuid');
45
const tokenMiddleware = require('../../middlewares/token');
56
const { checkUserExists } = require('../../middlewares/validators');
67
const Task = require('../models/taskModel');
@@ -28,6 +29,7 @@ exports.create_new_task = async (req, res) => {
2829
if (tokenValid.success && userExists) {
2930
let newTask = new Task({
3031
task: sanitize(task),
32+
externalId: uuidv4(),
3133
user: uniqueId,
3234
createdOnDate: format(new Date(), 'dd/MM/yyyy'),
3335
createdOnTime: format(new Date(), 'HH:mm'),
@@ -116,11 +118,11 @@ exports.read_all_user_tasks = async (req, res) => {
116118
/**
117119
* Gets all user tasks from the DB
118120
* GET
119-
* PARAMS: /:uniqueId /:token /:taskId
121+
* PARAMS: /:uniqueId /:token /:externalId
120122
*/
121123
exports.read_single_task = async (req, res) => {
122-
const { uniqueId, token, taskId } = req.params;
123-
if (!uniqueId || !token || !taskId) {
124+
const { uniqueId, token, externalId } = req.params;
125+
if (!uniqueId || !token || !externalId) {
124126
res.status(400).json({
125127
success: false,
126128
message: 'Missing request data',
@@ -131,7 +133,7 @@ exports.read_single_task = async (req, res) => {
131133
let tokenValid = await tokenMiddleware.checkToken(token);
132134
let userExists = await checkUserExists(uniqueId);
133135
if (tokenValid.success && userExists) {
134-
Task.findById(taskId, (err, task) => {
136+
Task.find({ externalId: sanitize(externalId) }, (err, task) => {
135137
if (err) {
136138
res.status(400).json({
137139
success: false,
@@ -165,15 +167,16 @@ exports.read_single_task = async (req, res) => {
165167
/**
166168
* Creates a new task in the database
167169
* PUT
168-
* PARAMS: /:uniqueId /:token /:taskId
170+
* PARAMS: /:uniqueId /:token /:externalId
169171
* {
170-
* "task": ""
172+
* "task": "",
173+
* "completed": boolean
171174
* }
172175
*/
173176
exports.update_single_task = async (req, res) => {
174-
const { uniqueId, token, taskId } = req.params;
175-
const { task } = sanitize(req.body.task);
176-
if (!uniqueId || !token || !taskId || !task) {
177+
const { uniqueId, token, externalId } = req.params;
178+
const { task, completed } = req.body;
179+
if (!uniqueId || !token || !externalId || !task) {
177180
res.status(400).json({
178181
success: false,
179182
message: 'Missing request data',
@@ -185,8 +188,8 @@ exports.update_single_task = async (req, res) => {
185188
let userExists = await checkUserExists(uniqueId);
186189
if (tokenValid.success && userExists) {
187190
Task.updateOne(
188-
{ _id: taskId },
189-
{ $set: { task: task } },
191+
{ externalId: sanitize(externalId) },
192+
{ $set: { task: sanitize(task), completed: completed } },
190193
{ new: true },
191194
(err, task) => {
192195
if (err) {
@@ -223,11 +226,11 @@ exports.update_single_task = async (req, res) => {
223226
/**
224227
* Creates a new task in the database
225228
* DELETE
226-
* PARAMS: /:uniqueId /:token /:taskId
229+
* PARAMS: /:uniqueId /:token /:externalId
227230
*/
228231
exports.delete_single_task = async (req, res) => {
229-
const { uniqueId, token, taskId } = req.params;
230-
if (!uniqueId || !token || !taskId) {
232+
const { uniqueId, token, externalId } = req.params;
233+
if (!uniqueId || !token || !externalId) {
231234
res.status(400).json({
232235
success: false,
233236
message: 'Missing request data',
@@ -238,20 +241,24 @@ exports.delete_single_task = async (req, res) => {
238241
let tokenValid = await tokenMiddleware.checkToken(token);
239242
let userExists = await checkUserExists(uniqueId);
240243
if (tokenValid.success && userExists) {
241-
Task.remove({ _id: taskId }, { new: true }, (err, task) => {
242-
if (err) {
243-
res.status(400).json({
244-
success: false,
245-
message: "Couldn't delete task",
246-
data: err,
244+
Task.deleteOne(
245+
{ externalId: externalId },
246+
{ new: true },
247+
(err, task) => {
248+
if (err) {
249+
res.status(400).json({
250+
success: false,
251+
message: "Couldn't delete task",
252+
data: err,
253+
});
254+
}
255+
res.status(200).json({
256+
success: true,
257+
message: 'Task deleted successfully',
258+
data: task,
247259
});
248260
}
249-
res.status(200).json({
250-
success: true,
251-
message: 'Task deleted successfully',
252-
data: task,
253-
});
254-
});
261+
);
255262
} else {
256263
res.status(400).json({
257264
success: false,

api/models/taskModel.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
1-
"use strict";
2-
const mongoose = require("mongoose");
1+
'use strict';
2+
const mongoose = require('mongoose');
33
const Schema = mongoose.Schema;
44

55
const TaskSchema = new Schema(
66
{
77
task: {
88
type: String,
99
},
10+
externalId: {
11+
type: String,
12+
},
13+
completed: {
14+
type: Boolean,
15+
default: false,
16+
},
1017
user: {
1118
type: String,
1219
},
@@ -20,4 +27,4 @@ const TaskSchema = new Schema(
2027
{ timestamps: true }
2128
);
2229

23-
module.exports = mongoose.model("Task", TaskSchema);
30+
module.exports = mongoose.model('Task', TaskSchema);

api/routes/todoListRoutes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module.exports = (app) => {
77
.post(todoList.create_new_task);
88
app.route('/api/v1/tasks/:uniqueId/:token').get(todoList.read_all_user_tasks);
99
app
10-
.route('/api/v1/tasks/:uniqueId/:token/:taskId')
10+
.route('/api/v1/tasks/:uniqueId/:token/:externalId')
1111
.get(todoList.read_single_task)
1212
.put(todoList.update_single_task)
1313
.delete(todoList.delete_single_task);

0 commit comments

Comments
 (0)