auto-deploy-demo/server/routes/deploy.js

92 lines
2.5 KiB
JavaScript
Raw Normal View History

2026-02-23 06:31:59 +00:00
const express = require('express');
const { authMiddleware } = require('../middleware/auth');
const projectService = require('../services/projectService');
const processManager = require('../services/processManager');
const config = require('../config');
2026-02-23 06:31:59 +00:00
const router = express.Router();
router.post('/:id/start', authMiddleware, async (req, res) => {
const project = projectService.getProjectById(req.params.id);
if (!project) {
return res.status(404).json({ error: 'Project not found' });
}
if (project.status === 'running') {
return res.status(400).json({ error: 'Project is already running' });
}
try {
const result = await processManager.startProject(project);
const url = config.getProjectUrl(result.port, project.path);
projectService.updateProjectStatus(project.id, 'running', result.port, url);
2026-02-23 06:31:59 +00:00
res.json({
message: 'Project started successfully',
url: url,
2026-02-23 06:31:59 +00:00
port: result.port
});
} catch (error) {
res.status(500).json({ error: error.message });
}
});
router.post('/:id/stop', authMiddleware, (req, res) => {
const project = projectService.getProjectById(req.params.id);
if (!project) {
return res.status(404).json({ error: 'Project not found' });
}
if (project.status !== 'running') {
return res.status(400).json({ error: 'Project is not running' });
}
try {
processManager.stopProject(project);
projectService.updateProjectStatus(project.id, 'stopped');
res.json({ message: 'Project stopped successfully' });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
router.get('/ports/status', authMiddleware, async (req, res) => {
try {
const status = await processManager.getPortStatus();
res.json(status);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
router.get('/:id/logs', authMiddleware, (req, res) => {
const project = projectService.getProjectById(req.params.id);
if (!project) {
return res.status(404).json({ error: 'Project not found' });
}
const logs = projectService.getProjectLogs(project.id);
res.json(logs);
});
router.get('/:id/status', authMiddleware, (req, res) => {
const project = projectService.getProjectById(req.params.id);
if (!project) {
return res.status(404).json({ error: 'Project not found' });
}
res.json({
status: project.status,
port: project.port,
url: project.url,
lastDeployed: project.lastDeployed
});
});
module.exports = router;