34 lines
933 B
TypeScript
34 lines
933 B
TypeScript
import { Router } from "express";
|
|
import { TodoService } from "../../modules/todos/service";
|
|
import { validateBody } from "../../core/middleware/validate";
|
|
import { createTodoSchema } from "../../modules/todos/types";
|
|
import { requireAuth } from "../../core/middleware/auth";
|
|
|
|
const service = new TodoService();
|
|
|
|
export function registerTodoRoutes(router: Router) {
|
|
const r = Router();
|
|
|
|
r.use(requireAuth);
|
|
|
|
r.post("/todo", validateBody(createTodoSchema), async (req, res) => {
|
|
const todo = await service.createTodo(req.body);
|
|
res.json(todo);
|
|
});
|
|
|
|
r.get("/todo", async (_req, res) => {
|
|
const todos = await service.listTodos();
|
|
res.json(todos);
|
|
});
|
|
|
|
r.patch("/todo/:id/complete", async (req, res) => {
|
|
const updated = await service.markComplete(req.params.id);
|
|
if (!updated) {
|
|
return res.status(404).json({ error: "Todo not found" });
|
|
}
|
|
res.json(updated);
|
|
});
|
|
|
|
router.use(r);
|
|
}
|