Persist distribution board setup

This commit is contained in:
2026-07-25 23:41:27 +02:00
parent 1a77eedaa8
commit 1cf26a932e
21 changed files with 1027 additions and 22 deletions
@@ -1,7 +1,13 @@
import type { Request, Response } from "express";
import { db } from "../../db/client.js";
import { DistributionBoardRepository } from "../../db/repositories/distribution-board.repository.js";
import {
createDistributionBoardInsertProjectCommand,
createDistributionBoardStructureSnapshot,
} from "../../domain/models/distribution-board-structure-project-command.model.js";
import { createDistributionBoardSchema } from "../../shared/validation/project-structure.schemas.js";
import { projectCommandService } from "../composition/project-command-stores.js";
import { respondWithProjectCommandError } from "./project-command.controller.js";
const distributionBoardRepository = new DistributionBoardRepository(db);
@@ -26,9 +32,23 @@ export async function createDistributionBoard(req: Request, res: Response) {
return res.status(400).json({ error: parsed.error.flatten() });
}
const board = distributionBoardRepository.createWithCircuitListAndDefaultSections(
const structure = createDistributionBoardStructureSnapshot(
projectId,
parsed.data.name
);
return res.status(201).json(board);
try {
const result = projectCommandService.executeUser({
projectId,
expectedRevision: parsed.data.expectedRevision,
description: "Verteilung anlegen",
command:
createDistributionBoardInsertProjectCommand(structure),
});
return res.status(201).json({
...result,
distributionBoard: structure.distributionBoard,
});
} catch (error) {
return respondWithProjectCommandError(error, res);
}
}