91 lines
1.7 KiB
JavaScript
91 lines
1.7 KiB
JavaScript
/**
|
|
* Projects Routes
|
|
* All routes related to project management
|
|
*/
|
|
|
|
const express = require('express');
|
|
const router = express.Router();
|
|
const db = require('../db');
|
|
|
|
/**
|
|
* GET /api/projects
|
|
* Get all projects
|
|
*/
|
|
router.get('/', (req, res, next) => {
|
|
try {
|
|
const projects = db.getAllProjects();
|
|
res.json(projects);
|
|
} catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
|
|
/**
|
|
* GET /api/projects/:id
|
|
* Get a specific project
|
|
*/
|
|
router.get('/:id', (req, res, next) => {
|
|
try {
|
|
const project = db.getProject(req.params.id);
|
|
if (!project) {
|
|
return res.status(404).json({ error: 'Project not found' });
|
|
}
|
|
res.json(project);
|
|
} catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
|
|
/**
|
|
* POST /api/projects
|
|
* Create a new project
|
|
*/
|
|
router.post('/', (req, res, next) => {
|
|
try {
|
|
const { name, description } = req.body;
|
|
|
|
if (!name || name.trim().length === 0) {
|
|
return res.status(400).json({ error: 'Project name is required' });
|
|
}
|
|
|
|
const project = db.createProject(name.trim(), description || '');
|
|
res.status(201).json(project);
|
|
} catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
|
|
/**
|
|
* PUT /api/projects/:id
|
|
* Update a project
|
|
*/
|
|
router.put('/:id', (req, res, next) => {
|
|
try {
|
|
const { name, description } = req.body;
|
|
|
|
if (!name || name.trim().length === 0) {
|
|
return res.status(400).json({ error: 'Project name is required' });
|
|
}
|
|
|
|
db.updateProject(req.params.id, name.trim(), description || '');
|
|
res.json({ success: true });
|
|
} catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
|
|
/**
|
|
* DELETE /api/projects/:id
|
|
* Delete a project
|
|
*/
|
|
router.delete('/:id', (req, res, next) => {
|
|
try {
|
|
db.deleteProject(req.params.id);
|
|
res.json({ success: true });
|
|
} catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|