Add task api controller
Add tasksApiController.js file
touch src/controllers/tasksApiController.js
Write tasksApiController.js
import {
createTask,
findTasksByUserId,
findTaskByTaskId,
updateTask,
deleteTask,
completeTask
} from "../models/task.js";
import {
validateCreateTask,
validateUpdateTask,
validateCompleteTask
} from "../validators/taskValidators.js";
export async function createTaskController(req, res) {
const { valid, errors, data } = validateCreateTask(req.body);
if (!valid) {
return res.status(400).json({ errors });
}
const task = await createTask({
user_id: res.locals.currentUser?.user_id,
...data
});
res.status(201).json(task);
}
export async function getTasksController(req, res) {
const { completed } = req.query;
let completedFilter;
if (completed === "true") completedFilter = true;
if (completed === "false") completedFilter = false;
const tasks = await findTasksByUserId(res.locals.currentUser?.user_id, {
completed: completedFilter
});
res.json(tasks);
}
export async function getTaskByIdController(req, res) {
const { id } = req.params;
const task = await findTaskByTaskId(id);
if (!task || task.user_id !== res.locals.currentUser?.user_id) {
return res.status(404).json({ error: "Task not found" });
}
res.json(task);
}
export async function updateTaskController(req, res) {
const { id } = req.params;
const existing = await findTaskByTaskId(id);
if (!existing || existing.user_id !== res.locals.currentUser?.user_id) {
return res.status(404).json({ error: "Task not found" });
}
const { valid, errors, data } = validateUpdateTask(req.body);
if (!valid) {
return res.status(400).json({ errors });
}
const updated = await updateTask(id, data);
res.json(updated);
}
export async function deleteTaskController(req, res) {
const { id } = req.params;
const existing = await findTaskByTaskId(id);
if (!existing || existing.user_id !== res.locals.currentUser?.user_id) {
return res.status(404).json({ error: "Task not found" });
}
const deleted = await deleteTask(id);
res.json({ deleted });
}
export async function completeTaskController(req, res) {
const { id } = req.params;
const existing = await findTaskByTaskId(id);
if (!existing || existing.user_id !== res.locals.currentUser?.user_id) {
return res.status(404).json({ error: "Task not found" });
}
const { valid, errors } = validateCompleteTask(req.body);
if (!valid) {
return res.status(400).json({ errors });
}
const updated = await completeTask(id);
res.json(updated);
}
Commit
git add .
git commit -m 'Adds task api controller'
Next:
Write task view controller