50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
import express from 'express';
|
|
import multer from 'multer';
|
|
import {
|
|
getAllProjectsHandler,
|
|
getProjectByIdHandler,
|
|
createProjectHandler,
|
|
updateProjectHandler,
|
|
deleteProjectHandler,
|
|
getProjectFilesHandler,
|
|
addProjectFileHandler,
|
|
deleteProjectFileHandler,
|
|
downloadProjectFilesHandler,
|
|
} from '../controllers/projectsController.js';
|
|
import {
|
|
validateGetAllQuery,
|
|
validateId,
|
|
validateCreateProject,
|
|
validateUpdateProject,
|
|
} from '../middleware/validateProjects.js';
|
|
import { authenticate } from '../middleware/authenticate.js';
|
|
|
|
const router = express.Router();
|
|
|
|
const upload = multer({
|
|
storage: multer.memoryStorage(),
|
|
limits: { fileSize: 10 * 1024 * 1024 },
|
|
});
|
|
|
|
router.use(authenticate);
|
|
|
|
//Project Routes
|
|
router.get('/', validateGetAllQuery, getAllProjectsHandler);
|
|
router.get('/:id', validateId, getProjectByIdHandler);
|
|
router.post('/', validateCreateProject, createProjectHandler);
|
|
router.put('/:id', validateId, validateUpdateProject, updateProjectHandler);
|
|
router.delete('/:id', validateId, deleteProjectHandler);
|
|
|
|
// Project File Routes
|
|
router.get('/:id/files', validateId, getProjectFilesHandler);
|
|
router.post(
|
|
'/:id/files',
|
|
validateId,
|
|
upload.single('file'),
|
|
addProjectFileHandler
|
|
);
|
|
router.delete('/files/:id', validateId, deleteProjectFileHandler);
|
|
router.get('/:id/files/download', validateId, downloadProjectFilesHandler);
|
|
|
|
export default router;
|