Files
datacenter-designer/server/routes/projects.js
Stefano Manfredi 3431a121a9 First commit
2025-10-27 11:57:38 +00:00

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;