94 lines
4.3 KiB
JavaScript
94 lines
4.3 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const express_1 = require("express");
|
|
const zod_1 = require("zod");
|
|
const task_controller_1 = require("../controllers/task.controller");
|
|
const validation_middleware_1 = require("../middleware/validation.middleware");
|
|
const rateLimit_middleware_1 = require("../middleware/rateLimit.middleware");
|
|
const task_validator_1 = require("../validators/task.validator");
|
|
const router = (0, express_1.Router)();
|
|
const taskController = new task_controller_1.TaskController();
|
|
// UUID validation schema for params
|
|
const UuidParamsSchema = zod_1.z.object({
|
|
id: zod_1.z.string().uuid()
|
|
});
|
|
/**
|
|
* @route GET /api/tasks
|
|
* @desc Get all tasks with pagination and filtering
|
|
* @access Public
|
|
*/
|
|
router.get('/', rateLimit_middleware_1.generalLimiter, (0, validation_middleware_1.validate)(task_validator_1.TaskQuerySchema, 'query'), (req, res) => taskController.getTasks(req, res));
|
|
/**
|
|
* @route GET /api/tasks/:id
|
|
* @desc Get a single task by ID
|
|
* @access Public
|
|
*/
|
|
router.get('/:id', rateLimit_middleware_1.generalLimiter, (0, validation_middleware_1.validate)(UuidParamsSchema, 'params'), (req, res) => taskController.getTaskById(req, res));
|
|
/**
|
|
* @route POST /api/tasks
|
|
* @desc Create a new task
|
|
* @access Public
|
|
*/
|
|
router.post('/', rateLimit_middleware_1.strictLimiter, (0, validation_middleware_1.validate)(task_validator_1.CreateTaskSchema, 'body'), (req, res) => taskController.createTask(req, res));
|
|
/**
|
|
* @route PUT /api/tasks/:id
|
|
* @desc Update a task
|
|
* @access Public
|
|
*/
|
|
router.put('/:id', rateLimit_middleware_1.strictLimiter, (0, validation_middleware_1.validateMultiple)({
|
|
params: UuidParamsSchema,
|
|
body: task_validator_1.UpdateTaskSchema
|
|
}), (req, res) => taskController.updateTask(req, res));
|
|
/**
|
|
* @route PATCH /api/tasks/:id
|
|
* @desc Partially update a task
|
|
* @access Public
|
|
*/
|
|
router.patch('/:id', rateLimit_middleware_1.strictLimiter, (0, validation_middleware_1.validateMultiple)({
|
|
params: UuidParamsSchema,
|
|
body: task_validator_1.UpdateTaskSchema
|
|
}), (req, res) => taskController.updateTask(req, res));
|
|
/**
|
|
* @route DELETE /api/tasks/:id
|
|
* @desc Delete a task
|
|
* @access Public
|
|
*/
|
|
router.delete('/:id', rateLimit_middleware_1.strictLimiter, (0, validation_middleware_1.validate)(UuidParamsSchema, 'params'), (req, res) => taskController.deleteTask(req, res));
|
|
/**
|
|
* @route POST /api/tasks/bulk/create
|
|
* @desc Bulk create tasks
|
|
* @access Public
|
|
*/
|
|
router.post('/bulk/create', rateLimit_middleware_1.bulkLimiter, (0, validation_middleware_1.validate)(task_validator_1.BulkCreateTasksSchema, 'body'), (req, res) => taskController.bulkCreateTasks(req, res));
|
|
/**
|
|
* @route PUT /api/tasks/bulk/update
|
|
* @desc Bulk update tasks
|
|
* @access Public
|
|
*/
|
|
router.put('/bulk/update', rateLimit_middleware_1.bulkLimiter, (0, validation_middleware_1.validate)(task_validator_1.BulkUpdateTasksSchema, 'body'), (req, res) => taskController.bulkUpdateTasks(req, res));
|
|
/**
|
|
* @route DELETE /api/tasks/bulk/delete
|
|
* @desc Bulk delete tasks
|
|
* @access Public
|
|
*/
|
|
router.delete('/bulk/delete', rateLimit_middleware_1.bulkLimiter, (0, validation_middleware_1.validate)(task_validator_1.BulkDeleteTasksSchema, 'body'), (req, res) => taskController.bulkDeleteTasks(req, res));
|
|
/**
|
|
* @route POST /api/tasks/duplicate
|
|
* @desc Duplicate a task
|
|
* @access Public
|
|
*/
|
|
router.post('/duplicate', rateLimit_middleware_1.strictLimiter, (0, validation_middleware_1.validate)(task_validator_1.DuplicateTaskSchema, 'body'), (req, res) => taskController.duplicateTask(req, res));
|
|
/**
|
|
* @route POST /api/tasks/template/create
|
|
* @desc Create a template from a task
|
|
* @access Public
|
|
*/
|
|
router.post('/template/create', rateLimit_middleware_1.templateLimiter, (0, validation_middleware_1.validate)(task_validator_1.CreateTemplateFromTaskSchema, 'body'), (req, res) => taskController.createTemplateFromTask(req, res));
|
|
/**
|
|
* @route POST /api/tasks/template/apply
|
|
* @desc Apply a template to create a new task
|
|
* @access Public
|
|
*/
|
|
router.post('/template/apply', rateLimit_middleware_1.templateLimiter, (0, validation_middleware_1.validate)(task_validator_1.ApplyTemplateSchema, 'body'), (req, res) => taskController.applyTemplate(req, res));
|
|
exports.default = router;
|
|
//# sourceMappingURL=task.routes.js.map
|