Create distribution boards atomically

This commit is contained in:
2026-07-23 17:45:33 +02:00
parent 1c57df46fa
commit b2034c7dfb
6 changed files with 119 additions and 25 deletions
@@ -1,11 +1,7 @@
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) {
@@ -29,12 +25,9 @@ export async function createDistributionBoard(req: Request, res: Response) {
return res.status(400).json({ error: parsed.error.flatten() });
}
const board = await distributionBoardRepository.create(projectId, parsed.data.name);
const list = await circuitListRepository.createForDistributionBoard({
const board = distributionBoardRepository.createWithCircuitListAndDefaultSections(
projectId,
distributionBoardId: board.id,
name: `${board.name} Stromkreisliste`,
});
await circuitSectionRepository.createDefaults(list.id);
parsed.data.name
);
return res.status(201).json(board);
}