import type { Request, Response } from "express"; import { circuitWriteService } from "../composition/circuit-write-service.js"; import { createCircuitSchema, createCircuitWithDeviceRowsSchema, } from "../../shared/validation/circuit.schemas.js"; export async function createCircuit(req: Request, res: Response) { const { projectId, circuitListId } = req.params; if (typeof projectId !== "string" || typeof circuitListId !== "string") { return res.status(400).json({ error: "Invalid parameters" }); } const parsed = createCircuitSchema.safeParse(req.body); if (!parsed.success) { return res.status(400).json({ error: parsed.error.flatten() }); } try { const created = await circuitWriteService.createCircuit(projectId, circuitListId, parsed.data); return res.status(201).json(created); } catch (error) { return res.status(400).json({ error: error instanceof Error ? error.message : "Failed to create circuit." }); } } export async function createCircuitWithDeviceRows(req: Request, res: Response) { const { projectId, circuitListId } = req.params; if (typeof projectId !== "string" || typeof circuitListId !== "string") { return res.status(400).json({ error: "Ungültige Parameter." }); } const parsed = createCircuitWithDeviceRowsSchema.safeParse(req.body); if (!parsed.success) { return res.status(400).json({ error: parsed.error.flatten() }); } try { const created = await circuitWriteService.createCircuitWithDeviceRows( projectId, circuitListId, parsed.data ); return res.status(201).json(created); } catch (error) { return res.status(400).json({ error: error instanceof Error ? error.message : "Stromkreis und Gerätezeilen konnten nicht erstellt werden.", }); } } export async function deleteCircuit(req: Request, res: Response) { const { circuitId } = req.params; if (typeof circuitId !== "string") { return res.status(400).json({ error: "Invalid circuitId" }); } try { await circuitWriteService.deleteCircuit(circuitId); return res.status(204).send(); } catch (error) { return res.status(400).json({ error: error instanceof Error ? error.message : "Failed to delete circuit." }); } } export async function getNextCircuitIdentifier(req: Request, res: Response) { const { sectionId } = req.params; if (typeof sectionId !== "string") { return res.status(400).json({ error: "Invalid sectionId" }); } try { const nextIdentifier = await circuitWriteService.getNextIdentifier(sectionId); return res.json({ sectionId, nextIdentifier }); } catch (error) { return res.status(400).json({ error: error instanceof Error ? error.message : "Failed to get identifier." }); } }