API
할 일 목록 가져오기 API
router.get("/todos", async (req, res) => {
const todos = await Todo.find().sort("-order").exec();
res.send({ todos });
});
할 일 순서 변경 API
router.patch("/todos/:todoId", async (req, res) => {
const { todoId } = req.params;
const { order } = req.body;
const currentTodo = await Todo.findById(todoId);
if (!currentTodo) {
return res
.status(400)
.json({ errorMessage: "존재하지 않는 할 일 입니다." });
}
if (order) {
const targetTodo = await Todo.findOne({ order }).exec();
if (targetTodo) {
targetTodo.order = currentTodo.order;
await targetTodo.save();
}
currentTodo.order = order;
await currentTodo.save();
}
});
할 일 삭제 API
router.delete("/todos/:todoId", async (req, res) => {
const { todoId } = req.params;
const deleteTodo = await Todo.findById(todoId).exec();
if (!deleteTodo) {
return res
.status(400)
.json({ errorMessage: "존재하지 않는 할 일 입니다." });
}
await deleteTodo.delete();
res.json({ result: "삭제성공!" });
});
할 일 내용/체크박스 수정 API
router.patch("/todos/:todoId", async (req, res) => {
const { todoId } = req.params;
const { order, value, done } = req.body;
const currentTodo = await Todo.findById(todoId).exec();
if (!currentTodo) {
return res
.status(400)
.json({ errorMessage: "존재하지 않는 할 일 입니다." });
}
if (order) {
const targetTodo = await Todo.findOne({ order }).exec();
if (targetTodo) {
targetTodo.order = currentTodo.order;
await targetTodo.save();
}
currentTodo.order = order;
} else if (value) {
currentTodo.value = value;
} else if (done !== undefined) {
currentTodo.doneAt = done ? new Date() : null;
}
await currentTodo.save();
res.send({ result: "수정완료!" });
});