From 3a6d7bd466f2f5d8b6cfeae4881d5007aef27fc7 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 6 Jan 2016 12:16:41 +0100 Subject: [PATCH] fix sync of remove challenge task --- website/src/models/challenge.js | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/website/src/models/challenge.js b/website/src/models/challenge.js index bf009314a9..430a7e0443 100644 --- a/website/src/models/challenge.js +++ b/website/src/models/challenge.js @@ -174,24 +174,14 @@ schema.methods.updateTask = async function challengeUpdateTask (task) { schema.methods.removeTask = async function challengeRemoveTask (task) { let challenge = this; - // Remove the tasks from users' and map each of them to an update query to remove the task from tasksOrder - let updateQueries = (await Tasks.Task.findOneAndRemove({ + // Set the task as broken + await Tasks.Task.update({ userId: {$exists: true}, 'challenge.id': challenge.id, 'challenge.taskId': task._id, }, { - fields: {userId: 1, type: 1}, // fetch only what's necessary - }).lean().exec()) - .map(removedTask => { - return User.update({_id: removedTask.userId}, { - $pull: {[`tasksOrder${removedTask.type}s`]: removedTask._id}, - }); - }); - - // Execute each update sequentially - for (let query of updateQueries) { - await query.exec(); // eslint-disable-line babel/no-await-in-loop - } + $set: {'challenge.broken': 'TASK_DELETED'}, // TODO what about updatedAt? + }).lean().exec(); }; export let model = mongoose.model('Challenge', schema);