import type { Request, Response } from "express"; import { CircuitListRepository } from "../../db/repositories/circuit-list.repository.js"; import { CircuitSectionRepository } from "../../db/repositories/circuit-section.repository.js"; import { DistributionBoardRepository } from "../../db/repositories/distribution-board.repository.js"; import { createDistributionBoardSchema } from "../../shared/validation/consumer.schemas.js"; const circuitListRepository = new CircuitListRepository(); const circuitSectionRepository = new CircuitSectionRepository(); const distributionBoardRepository = new DistributionBoardRepository(); export async function listDistributionBoardsByProject(req: Request, res: Response) { const { projectId } = req.params; if (typeof projectId !== "string") { return res.status(400).json({ error: "Invalid projectId" }); } const result = await distributionBoardRepository.listByProject(projectId); return res.json(result); } export async function createDistributionBoard(req: Request, res: Response) { const { projectId } = req.params; if (typeof projectId !== "string") { return res.status(400).json({ error: "Invalid projectId" }); } const parsed = createDistributionBoardSchema.safeParse(req.body); if (!parsed.success) { return res.status(400).json({ error: parsed.error.flatten() }); } const board = await distributionBoardRepository.create(projectId, parsed.data.name); const list = await circuitListRepository.createForDistributionBoard({ projectId, distributionBoardId: board.id, name: `${board.name} Stromkreisliste`, }); await circuitSectionRepository.createDefaults(list.id); return res.status(201).json(board); }