This commit is contained in:
2026-06-25 12:05:53 -05:00
commit b58e50e423
141 changed files with 28190 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
import { camelJob } from '../models/mappers.js';
import { createRunPlan, deleteRunPlan, listRunPlans, loadVisibleRunPlan, updateRunPlan } from '../models/runPlanModel.js';
import { executeRunPlan } from '../services/powershellRunner.js';
export function index(req, res) {
res.json(listRunPlans(req.user.id));
}
export function create(req, res) {
res.status(201).json(createRunPlan(req.body, req.user.id));
}
export function show(req, res) {
const runplan = loadVisibleRunPlan(req.params.id, req.user.id);
if (!runplan) return res.status(404).json({ error: 'RunPlan not found' });
res.json(runplan);
}
export function update(req, res) {
const runplan = updateRunPlan(req.params.id, req.body, req.user.id);
if (!runplan) return res.status(404).json({ error: 'RunPlan not found' });
res.json(runplan);
}
export function destroy(req, res) {
deleteRunPlan(req.params.id, req.user.id);
res.status(204).end();
}
export function execute(req, res) {
// Execution remains an API concern; Vue only requests a RunPlan launch.
const runplan = loadVisibleRunPlan(req.params.id, req.user.id);
if (!runplan) return res.status(404).json({ error: 'RunPlan not found' });
try {
res.status(202).json(camelJob(executeRunPlan(req.params.id, req.user.id)));
} catch (error) {
res.status(400).json({ error: error.message });
}
}